dunkel proxyscrape logo

Wie man Reddit mit Python ausschöpft

Anleitungen, Python, Scraping, 02.11.20225 Min. gelesen

Inhaltsübersicht

Menschen können leicht Informationen aus verschiedenen Quellen wie Facebook, Reddit und Twitter sammeln und auslesen. Ein Scraper ist ein spezialisiertes Tool, das Daten aus einer Webseite genau und schnell extrahiert. Die Scraping-APIs helfen den Scrapern, das Verbot von Anti-Scraping-Techniken zu vermeiden, die von den Websites eingesetzt werden. Allerdings ist die Verwendung von APIs im Vergleich zu einem selbst verwalteten Proxy-Tool teuer.

Haben Sie Reddit schon benutzt? Wenn Sie ein Sozialforscher sind und viel Zeit online verbringen, haben Sie wahrscheinlich schon von Reddit gehört. Reddit bezeichnet sich selbst als die "Titelseite des Internets". Es handelt sich um ein Online-Diskussionsforum, in dem Menschen Inhalte und Nachrichten austauschen oder die Beiträge anderer Personen kommentieren. Es ist also eine unglaubliche Datenquelle für Internet-Vermarkter und Sozialforscher. 

Reddit hat eine API namens Python Reddit API Wrapper, abgekürzt PRAW, um Daten zu crawlen. In diesem Blog zeige ich Ihnen, wie Sie Reddit mit Python crawlen können. Aber vorher müssen Sie wissen, warum Sie Reddit scrapen müssen.

Warum müssen Sie Reddit scrapen?

Wenn wir über den Aufbau von Reddit sprechen, dann ist es in mehrere Gemeinschaften unterteilt, die als "Subreddits" bekannt sind. Sie können jeden Subreddit zu Ihrem Thema im Internet finden. Die Sozialforscher führen Analysen durch, ziehen Schlüsse und setzen umsetzbare Pläne um, wenn sie Reddit-Diskussionen zu einem bestimmten Thema extrahieren. 

Sie können viele Datenpunkte von Reddit abrufen, z. B.:

  • Links
  • Kommentare
  • Bilder
  • Liste der Subreddits
  • Einreichungen für jedes Subreddit
  • Nutzernamen
  • Hochstufungen
  • Abgelehnt

Sie können alle Informationen von Reddit abrufen, die für Ihr Unternehmen relevant sind, weil Sie die folgenden Anforderungen erfüllen:

  • Erstellung von NLP-Anwendungen
  • Erfassen von Kundenstimmungen
  • Über die Markttrends auf dem Laufenden bleiben
  • Für die Verbraucherforschung
  • Zur Überwachung der Wirkung Ihrer Marketingkampagnen

Zum Beispiel, 

  • Eine Modemarke muss alle Kommentartexte, Titel, Links, Bilder und Beschriftungen in Mode-Subreddits scrapen:
    • Ausarbeitung der richtigen Preisstrategie
    • Erkennen von Farbtrends
    • Entdeckung der Schmerzpunkte von Fashionistas mit verschiedenen Marken
  • Journalisten und Nachrichtenredakteure müssen Autorenbeiträge mit Blog-Links auslesen, um maschinelle Lernalgorithmen für die automatische Textzusammenfassung zu trainieren.
  • Investitions- und Handelsunternehmen müssen "börsenbezogene" Subreddits durchforsten, um einen Investitionsplan zu entwickeln, indem sie interpretieren, welche Aktien diskutiert werden.

Herausforderungen beim Scraping von Reddit

Beim Reddit-Scraping werden Web-Scraper (Computerprogramme) verwendet, um öffentlich verfügbare Daten von der Reddit-Website zu extrahieren. Sie müssen die Reddit-Scraper verwenden, weil Sie bei der Verwendung der offiziellen Reddit-API mit Einschränkungen konfrontiert werden. Wenn Sie jedoch einen Web Scraper verwenden, der nicht die Reddit-API verwendet, um Daten von Reddit zu extrahieren, verstoßen Sie gegen die Reddit-Nutzungsbedingungen. Das bedeutet aber nicht, dass Web Scraping illegal ist.

Um eine reibungslose Scraping-Sitzung zu haben, müssen Sie die von Reddit eingerichteten Anti-Scraping-Systeme umgehen. Die gängigsten Anti-Scraping-Techniken, die von Reddit verwendet werden, sind:

  • IP-Verfolgung
  • Captchas

Sie können das Problem der IP-Verfolgung mit Hilfe von Proxies und IP-Rotation lösen. Andererseits können Sie das Problem der Captchas lösen, indem Sie Captcha-Lösungen wie 2Captcha verwenden.

Wie man Reddit mit Python ausschöpft

Es gibt fünf Möglichkeiten, Reddit zu scrapen, und das sind:

  • Manuelles Scraping - Es ist die einfachste, aber in Bezug auf Geschwindigkeit und Kosten am wenigsten effiziente Methode. Allerdings liefert sie Daten mit hoher Konsistenz.
  • Verwendung der Reddit-API - Sie benötigen grundlegende Programmierkenntnisse, um Reddit mit der Reddit-API zu scrapen. Sie liefert die Daten, begrenzt aber die Anzahl der Beiträge in einem Reddit-Thread auf 1000.
  • Mit Zucker überzogene APIs von Drittanbietern - Dies ist ein effektiver und skalierbarer Ansatz, aber er ist nicht kosteneffizient.
  • Web Scraping Tools - Diese Tools sind skalierbar und erfordern nur grundlegende Kenntnisse im Umgang mit einer Maus.
  • Benutzerdefinierte Scraping-Skripte - Sie sind in hohem Maße anpassbar und skalierbar, erfordern aber ein hohes Maß an Programmierkenntnissen.

Sehen wir uns an, wie wir Reddit mithilfe der Reddit-API mit Hilfe der folgenden Schritte scrapen können.

Reddit API-Konto erstellen

Bevor Sie fortfahren, müssen Sie ein Reddit-Konto erstellen. Um PRAW zu nutzen, müssen Sie sich für die Reddit-API registrieren, indem Sie diesem Link folgen.

Pakete und Module importieren

Zunächst importieren wir die in Pandas eingebauten Module, z. B. datetime, und zwei Module von Drittanbietern, PRAW und Pandas, wie unten gezeigt:

importieren Sie praw
importiere pandas als pd
import datetime as dt

Reddit- und Subreddit-Instanzen erhalten

Sie können auf die Reddit-Daten mit Praw zugreifen, was für Python Reddit API Wrapper steht. Zunächst müssen Sie eine Verbindung zu Reddit herstellen, indem Sie die Funktion praw.Reddit aufrufen und sie in einer Variablen speichern. Danach müssen Sie die folgenden Argumente an die Funktion übergeben.

reddit = praw.Reddit(client_id='PERSONAL_USE_SCRIPT_14_CHARS', \
                    client_secret='SECRET_KEY_27_CHARS ', \
                    user_agent='IHR_APP_NAME', \
                    username='IHR_REDDIT_USER_NAME', \
                    password='IHR_REDDIT_LOGIN_PASSWORT')
Jetzt können Sie den Subreddit Ihrer Wahl abrufen. Rufen Sie also die Instanz .subreddit von reddit (Variable) auf und übergeben Sie den Namen des Subreddits, auf den Sie zugreifen möchten. Sie können zum Beispiel den Subreddit r/Nootropics verwenden.
subreddit = reddit.subreddit('Nootropics')

Zugang zu den Threads

Jeder Subreddit hat die folgenden fünf verschiedenen Möglichkeiten, die von Redditoren erstellten Themen zu organisieren:

  • .neu
  • .heiß
  • .umstritten
  • .vergoldet
  • .top

Sie können die am meisten hochgestimmten Themen als:

top_subreddit = subreddit.top()

Sie erhalten ein listenähnliches Objekt mit den 100 besten Beiträgen in r/Nootropics. Reddits Anfrage-Limit liegt jedoch bei 1000, daher können Sie die Stichprobengröße steuern, indem Sie ein Limit an .top as übergeben:

top_subreddit = subreddit.top(limit=600)

Parsen und Herunterladen der Daten

Sie können alle Daten abrufen, die Sie wollen. Wir werden jedoch die folgenden Informationen zu den Themen abrufen:

  • id
  • Titel
  • Ergebnis
  • Datum der Erstellung
  • Fließtext

Dazu speichern wir unsere Daten in einem Wörterbuch und verwenden dann eine for-Schleife wie unten gezeigt.

topics_dict = { "title":[], \
                "score":[], \
                "id":[], "url":[], \
                "created": [], \
                "body":[]}

Jetzt können wir die Daten von der Reddit-API abrufen. Wir werden die Informationen an unser Wörterbuch anhängen, indem wir unser top_subreddit-Objekt durchlaufen.

for submission in top_subreddit:
    topics_dict["id"].append(beitrag.id)
    topics_dict["title"].append(eintrag.title)
    topics_dict["score"].append(eintrag.score)
    topics_dict["created"].append(Vorlage.created)
    topics_dict["body"].append(einreichung.selftext)

Nun packen wir unsere Daten in Pandas Dataframes, da Python-Dictionaries nicht einfach zu lesen sind.

topics_data = pd.DataFrame(topics_dict)

CSV exportieren

Es ist sehr einfach, in Pandas Datendateien in verschiedenen Formaten zu erstellen. Daher verwenden wir die folgenden Codezeilen, um unsere Daten in eine CSV-Datei zu exportieren.

topics_data.to_csv('FILENAME.csv', index=False)

Beste Reddit Proxies von 2021

Sie wissen, dass Reddit keine sehr strenge Website ist, wenn es um Proxy-Nutzungsbeschränkungen geht. Aber Sie können erwischt und bestraft werden, wenn Sie Ihre Aktionen auf Reddit ohne Proxys automatisieren. 

Sehen wir uns also einige der besten Proxys für Reddit an, die in zwei Kategorien fallen:

Residential Proxies - Dies sind die IP-Adressen, die der Internet Service Provider (ISP) einem Gerät an einem bestimmten physischen Standort zuweist. Diese Proxys verraten den tatsächlichen Standort des Geräts, mit dem sich der Nutzer bei einer Website anmeldet.
Rechenzentrums-Proxys - Dies sind verschiedene IP-Adressen, die nicht von einem Internetdienstanbieter stammen. Wir beziehen sie von einem Cloud-Service-Provider.

Im Folgenden finden Sie einige der besten Proxys für Reddit für Privatanwender und Rechenzentren.

Smartproxy

Smartproxy ist einer der besten Premium-Proxy-Anbieter für Privatanwender, da er für die Reddit-Automatisierung effektiv ist. Er verfügt über einen umfangreichen IP-Pool und bietet Zugang zu allen IPs, sobald Sie sich für seinen Service anmelden. 

Stormproxy

Die Preise und die unbegrenzte Bandbreite von Stormproxies machen sie zu einer guten Wahl. Sie sind erschwinglich und günstig in der Nutzung. Sie haben Proxys für verschiedene Anwendungsfälle und bieten die besten Wohn-Proxys für Reddit Automation.

ProxyScrape

ProxyScrape ist einer der beliebtesten Proxy-Dienstleister, der sich auf das Angebot von Proxys für Scraping konzentriert. Er bietet auch dedizierte Rechenzentrums-Proxys zusammen mit den gemeinsam genutzten Rechenzentrums-Proxys an. Es hat über 40k Rechenzentrums-Proxys, die Sie verwenden können, um Daten von Websites im Internet zu scrapen.

ProxyScrape bietet seinen Nutzern drei Arten von Diensten an, d.h., 

Hochproxies

Highproxies arbeitet mit Reddit zusammen und verfügt über die folgenden Kategorien von Proxys:
  • Gemeinsame Proxys
  • Private Vollmachten
  • Proxys für Rubriken-Websites
  • Ticketing-Vollmachten
  • Medien-Proxys

Instantproxies

Sie können auch Instantproxies für die Reddit-Automatisierung verwenden, da sie sehr sicher, zuverlässig und schnell sind und eine Betriebszeit von etwa 99,9 Prozent haben. Sie sind die günstigsten aller Rechenzentrums-Proxys.

Warum Reddit Proxies verwenden?

Sie benötigen Proxys, wenn Sie mit einigen automatischen Tools auf Reddit arbeiten. Das liegt daran, dass Reddit eine sehr sensible Website ist, die automatische Aktionen leicht erkennt und Ihre IP-Adresse für den Zugriff auf die Plattform sperrt. Wenn Sie also einige Aufgaben wie Abstimmungen, Beiträge, Beitritt zu/aus Gruppen und die Verwaltung von mehr als einem Konto automatisieren, müssen Sie definitiv Proxys verwenden, um schlechte Ergebnisse zu vermeiden.

Alternative Lösungen zum Scrapen von Reddit

Sie können sich für manuelles Scraping entscheiden, wenn Ihre Reddit-Scraping-Anforderungen gering sind. Wenn die Anforderungen jedoch groß sind, müssen Sie auf automatisierte Scraping-Methoden wie Web-Scraping-Tools und benutzerdefinierte Skripte zurückgreifen. Die Web Scraper erweisen sich als kosten- und ressourceneffizient, wenn Ihr täglicher Scraping-Bedarf unter ein paar Millionen Beiträgen liegt.

Schauen wir uns also einige der besten Reddit Scraper als beste Lösung an, um große Mengen an Reddit-Daten zu scrapen.

Scrapestrom

Scrapestorm ist eines der besten auf dem Markt erhältlichen Scraping-Tools, da es ziemlich gut funktioniert, wenn es um das Scraping von Reddit geht. Es nutzt künstliche Intelligenz, um die wichtigsten Datenpunkte auf der Webseite automatisch zu identifizieren.

Apifys Reddit Scraper

Der Reddit Scraper von Apify macht es Ihnen leicht, Daten zu extrahieren, ohne die Reddit-API zu verwenden. Das bedeutet, dass Sie kein Entwickler-API-Token und keine Autorisierung von Reddit benötigen, um die Daten für die kommerzielle Nutzung herunterzuladen. Sie können Ihr Scraping auch optimieren, indem Sie den integrierten Proxy-Service der Apify-Plattform nutzen. 

Schlussfolgerung

Wir haben fünf Möglichkeiten zum Scrapen von Reddit-Daten besprochen, und die einfachste ist die Verwendung der Reddit-API, da sie nur grundlegende Programmierkenntnisse erfordert. PRAW ist ein Python-Wrapper für die Reddit-API, mit dem Sie eine Reddit-API mit einer sauberen Python-Schnittstelle verwenden können. Wenn Sie jedoch große Reddit-Scraping-Anforderungen haben, können Sie öffentlich verfügbare Daten von der Reddit-Website mit Hilfe von Reddit-Scrapern extrahieren. Um Ihre Aktionen auf der Reddit-Website zu automatisieren, müssen Sie ein Rechenzentrum oder Proxys für Wohngebiete verwenden.