Im modernen Web verwenden viele Websites AJAX (Asynchronous JavaScript and XML), um die Benutzererfahrung durch dynamisches Laden von Inhalten zu verbessern. Anstatt die gesamte Seite zu aktualisieren, lädt AJAX Teile der Seite als Reaktion auf Benutzeraktionen wie Scrollen oder Klicken, ohne die gesamte Seite neu zu laden. Dies sorgt für ein reibungsloseres und schnelleres Erlebnis, stellt jedoch eine Herausforderung dar, wenn es darum geht, die Daten von diesen Websites zu extrahieren.

Wenn Sie versuchen, eine AJAX-Site zu scrapen, stellen Sie möglicherweise fest, dass die benötigten Daten nicht im statischen HTML enthalten sind. Stattdessen werden sie dynamisch von JavaScript geladen, sodass der Inhalt beim Anzeigen der Seitenquelle nicht verfügbar ist. Um diese Daten zu extrahieren, müssen Sie spezielle Scraping-Techniken verwenden, die mit AJAX-Anfragen interagieren können.

In diesem Blog führen wir Sie durch den gesamten Prozess des Scrapings von Daten von AJAX-gesteuerten Websites, vom Verständnis von AJAX bis hin zur Verwendung leistungsstarker Tools wie Python und Crawlbase Smart Proxy um Ihren Scraper zu optimieren und häufige Probleme wie Blockierungen zu vermeiden.

Lass uns loslegen!

Inhaltsverzeichnis

Herausforderungen beim Scraping von AJAX-Websites

Das Scraping von Daten von AJAX-gesteuerten Websites kann für Anfänger einige Zeit in Anspruch nehmen. Dies liegt daran, dass AJAX Inhalte dynamisch lädt, sodass die gewünschten Daten nicht in der ursprünglichen HTML-Quelle enthalten sind, wenn Sie eine Seite zum ersten Mal öffnen. Das Scraping von AJAX-gesteuerten Websites erfordert Tools und Techniken, um mit dynamisch geladenen Inhalten umzugehen. So wie ein MacBook jedoch möglicherweise nicht in Schlafmodus Aufgrund ungelöster Prozesse erfordert AJAX-Inhalt zusätzliche Schritte, um die dynamische Natur der Benutzerinteraktionen zu replizieren.

Herausforderungen beim Scraping von AJAX-Websites

AJAX funktioniert, indem es im Hintergrund Anfragen an den Server sendet und nur bestimmte Teile der Seite aktualisiert. Wenn Sie beispielsweise auf einer Produktseite nach unten scrollen, werden weitere Elemente geladen, oder wenn Sie auf eine Schaltfläche klicken, wird neuer Inhalt angezeigt. Dies ist für die Benutzererfahrung großartig, für herkömmliche Web Scraper ist es jedoch schwierig, Inhalte zu extrahieren, da die Daten in Echtzeit und oft erst geladen werden, nachdem die Seite fertig gerendert wurde.

Wenn Sie versuchen, eine solche Site zu scrapen, enthält das statische HTML, das Sie erhalten, nur das grundlegende Layout und die Elemente, nicht jedoch die durch AJAX-Aufrufe geladenen Daten. Einfaches Scraping funktioniert also nicht. Sie müssen dieselben AJAX-Anfragen nachahmen, die die Seite stellt, um die dynamischen Daten zu erhalten.

Techniken zum Scraping von AJAX-Websites

Das Scraping von AJAX-Websites erfordert spezielle Techniken, da der Inhalt nach dem ersten Laden der Seite geladen wird. Hier sind zwei Möglichkeiten, dies zu tun.

Replizieren von AJAX-Aufrufen

Das Replizieren von AJAX-Aufrufen ist die einfachste Möglichkeit, dynamische Inhalte direkt vom Server abzurufen.

  • Wie es funktioniert: Verwenden Sie die Entwicklertools Ihres Browsers, um die AJAX-Anforderungs-URLs und -Parameter zu finden. Diese Anforderungen werden im Hintergrund geladen und Sie können sie in Ihrem Scraper replizieren, um die Daten direkt abzurufen.
  • Warum es hilft: Diese Methode ist schneller, da Sie nicht die ganze Seite rendern müssen und den Inhalt schneller erhalten.

Rendern von JavaScript mit Headless-Browsern

Headless-Browser wie Selenium können JavaScript rendern, einschließlich AJAX-Inhalte.

  • Wie es funktioniert: Ein Headless-Browser simuliert echte Benutzeraktionen wie Scrollen oder Klicken, um AJAX-Anfragen auszulösen und Inhalte zu laden.
  • Warum es hilft: Dies ist nützlich, wenn eine Website zum Laden von Daten Benutzerinteraktionen oder komplexes JavaScript erfordert.

Mit diesen Methoden können Sie die Herausforderungen beim Scraping von AJAX-Websites umgehen. Im nächsten Abschnitt sehen wir uns die Tools an, die Sie hierfür verwenden können.

Tools zum Scraping von AJAX-Daten

Zum Scrapen von Daten von AJAX-Websites benötigen Sie die richtigen Tools. Hier finden Sie eine Liste einiger der beliebtesten Tools zum Scrapen von AJAX-Daten.

Python: Anfragen und BeautifulSoup

Python ist eine beliebte Sprache für Web Scraping, da sie einfach zu bedienen ist und über großartige Bibliotheken verfügt. Um AJAX-Seiten mit Python zu scrapen, sind zwei Bibliotheken am beliebtesten:

  • Produktanfragen: Damit können Sie HTTP-Anfragen an Websites stellen und den Inhalt abrufen. Es ist einfach zu verwenden und eignet sich gut zum Replizieren von AJAX-Aufrufen, sobald Sie die Anforderungs-URLs kennen.
  • BeautifulSuppe: Nachdem der HTML-Inhalt abgerufen wurde, hilft Ihnen BeautifulSoup beim Parsen und Extrahieren der benötigten Daten. Es eignet sich hervorragend zum Navigieren in der HTML-Struktur und zum Herausziehen bestimmter Elemente wie Produktnamen, Preise oder anderer dynamischer Inhalte.

Die Verwendung von Requests mit BeautifulSoup ist eine gute Wahl für grundlegendes AJAX-Scraping, insbesondere wenn Sie AJAX-Requests direkt replizieren können.

Selenium für die Browserautomatisierung

Beim Umgang mit komplexen Websites, die stark auf JavaScript basieren, ist Selenium ein leistungsfähigeres Tool. Im Gegensatz zu Requests, das nur reines HTML empfängt, können Sie mit Selenium mit einer Website wie ein Mensch interagieren.

  • Wie es funktioniert: Selenium automatisiert Browseraktionen wie das Klicken auf Schaltflächen oder das Scrollen auf Seiten nach unten, was AJAX-Anfragen zum Laden weiterer Daten auslösen kann.
  • Warum es hilft: Es eignet sich zum Scraping von Websites, deren Inhalte aufgrund von Benutzerinteraktionen dynamisch geladen werden, wie z. B. unendliches Scrollen oder interaktive Karten.

Selenium bietet die Möglichkeit, mit JavaScript gerenderte Seiten zu verarbeiten, und eignet sich daher ideal für komplexere Scraping-Aufgaben.

Scraping von AJAX-Seiten: Schritt-für-Schritt-Anleitung

Das Scraping von AJAX-basierten Websites mag kompliziert erscheinen, ist aber mit dem richtigen Ansatz und den richtigen Tools machbar. In diesem Abschnitt führen wir Sie Schritt für Schritt durch den AJAX-Scraping-Prozess. Anhand eines realen Beispiels zeigen wir Ihnen, wie Sie mithilfe eines AJAX-Endpunkts Echtzeitdaten von Milliardären aus Forbes abrufen.

1. Einrichten Ihres Scrapers

Bevor Sie mit dem Scraping beginnen, müssen Sie einige wichtige Bibliotheken installieren, insbesondere wenn Sie Python verwenden. Zum Scraping von AJAX-Inhalten werden folgende Bibliotheken am häufigsten verwendet:

  • Produktanfragen: Zum Abrufen von Webseiten und Tätigen von AJAX-Aufrufen.
  • BeautifulSuppe: Zum Analysieren und Extrahieren von Daten von der Seite.

Installieren Sie diese Bibliotheken mit pip:

1
Pip-Installationsanfragen beautifulsoup4

Sobald sie installiert sind, importieren Sie sie in Ihr Skript und richten Sie die anfängliche Struktur ein, um mit dem Scraping zu beginnen.

2. Identifizieren von AJAX-Anfragen

Die erste Aufgabe besteht darin, die AJAX-Anfragen zu identifizieren, die dynamische Inhalte laden. So geht's:

  1. Öffnen Sie die Website in Google Chrome. Als Beispiel verwenden wir Forbes Echtzeit-URL der Milliardärsliste.
  2. Klicken Sie mit der rechten Maustaste auf die Seite und wählen Sie „Untersuchen“ oder drücken Sie Strg+Umschalt+I, um die Entwicklertools zu öffnen.
  3. Gehen Sie zur Registerkarte „Netzwerk“ und filtern Sie nach XHR (XMLHttpRequest), um AJAX-Anfragen anzuzeigen.
  4. Aktualisieren Sie die Seite. Achten Sie auf neue Anfragen im XHR-Abschnitt.
Bildprüfung von AJAX-Anfragen

Die Daten sind über einen AJAX-API-Endpunkt verfügbar. Hier ist die API-URL:

1
https://www.forbes.com/forbesapi/person/rtb/0/-estWorthPrev/true.json?fields=rank,uri,personName,lastName,gender,source,industries,countryOfCitizenship,birthDate,finalWorth,est

Dieser Endpunkt gibt Daten über Milliardäre zurück, wie etwa ihren Namen, Rang, Vermögen und andere Details. Um Daten abzurufen, müssen wir lediglich eine HTTP-Anfrage an diese URL senden.

3. Replizieren von AJAX-Anfragen im Scraper

Da wir nun den AJAX-Endpunkt kennen, können wir diese Anfrage in unserem Scraper replizieren. Wenn Sie Requests verwenden, hilft Ihnen der folgende Code beim Abrufen der Daten:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
importieren Zugriffe

# URL für die AJAX-Anfrage
URL = „https://www.forbes.com/forbesapi/person/rtb/0/-estWorthPrev/true.json?fields=rank,uri,personName,lastName,gender,source,industries,countryOfCitizenship,birthDate,finalWorth,est“

# Senden Sie eine GET-Anfrage an die URL
Antwort = Anfragen.get(URL)

# Überprüfen Sie, ob die Anfrage erfolgreich war
if Antwort.Statuscode == 200:
Daten = Antwort.json()
drucken(Daten)
sonst:
drucken(„Daten konnten nicht abgerufen werden“)

4. Analysieren Sie die Antwort

Sobald wir die Antwort haben, müssen wir die JSON-Daten analysieren, um nützliche Informationen zu extrahieren. Die Antwort enthält eine Liste von Milliardären mit Details wie Name, Rang, Vermögen und mehr. So greifen Sie auf die relevanten Informationen zu:

1
2
3
4
5
6
7
8
9
10
11
# Analysieren Sie die JSON-Antwort
Personen = Daten['Personenliste']['Personenlisten']

# Durchlaufe die Liste und extrahiere Details
für person in Personen:
Name = Person['Personenname']
Rang = Person['Rang']
Vermögen = Person['letzterWert']
Land = Person['Land der Staatsbürgerschaft']

drucken(f"{Rang}. {Name} - {Reichtum} - {Land}")

Dieser Code gibt den Namen, den Rang, das Vermögen und das Land für jeden Milliardär im Datensatz aus.

1
2
3
4
5
6
7
8
9
10
1. Elon Musk – 303733.071 – Vereinigte Staaten
2. Larry Ellison – 224761.9 – Vereinigte Staaten
3. Jeff Bezos – 219362.138 – Vereinigte Staaten
4. Mark Zuckerberg – 191735.874 – Vereinigte Staaten
5. Bernard Arnault & Familie - 158184.432 - Frankreich
6. Warren Buffett – 147991.306 – Vereinigte Staaten
7. Larry Page - 143070.973 - Vereinigte Staaten
8. Sergey Brin – 136850.184 – Vereinigte Staaten
9. Jensen Huang – 123866.414 – Vereinigte Staaten
.... mehr

5. Daten in JSON-Dateien speichern

Nachdem Sie die erforderlichen Informationen extrahiert haben, möchten Sie diese möglicherweise zur späteren Verwendung speichern. Um die Daten in einer JSON-Datei zu speichern, verwenden Sie den folgenden Code:

1
2
3
4
5
importieren JSON

# Speichern Sie die Daten in einer JSON-Datei
mit XNUMXh geöffnet(„billionaires_data.json“, "w") as f:
json.dump(Personen, f, Einzug=4)

Dadurch wird ein erstellt billionaires_data.json Datei, die alle extrahierten Daten in einem lesbaren Format speichert.

Im nächsten Abschnitt besprechen wir, wie Sie Ihren Scraper mit Crawlbase optimieren können. Smart Proxy um ein Blockieren beim Schaben zu vermeiden.

Optimieren Sie Ihren Scraper mit Crawlbase Smart Proxy

Beim Scraping von AJAX-Websites können Probleme wie IP-Blockierung und Ratenbegrenzung Ihre Bemühungen stören. Crawlbase Smart Proxy hilft, diese Probleme zu lösen, indem es die IP-Rotation verwaltet und Ihren Scraper anonym hält. So können Sie Ihr Scraping optimieren:

1. Vermeiden Sie IP-Sperren und Ratenbegrenzungen

Crawlbase rotiert die IP-Adressen, sodass Anfragen von verschiedenen Benutzern angezeigt werden. Dadurch wird verhindert, dass Ihr Scraper blockiert wird, weil er zu viele Anfragen sendet.

2. Geotargeting für genaue Daten

Sie können für Ihre Anfragen bestimmte Standorte auswählen und so sicherstellen, dass die von Ihnen gesammelten Inhalte relevant und regionsspezifisch sind.

3. Umgehen Sie CAPTCHAs und Anti-Bot-Maßnahmen

Durch die Integration von Crawlbase mit CAPTCHA-Lösungstools kann Ihr Scraper gängige Anti-Bot-Schutzmaßnahmen ohne manuelles Eingreifen umgehen.

4. Einfache Einrichtung und Integration

So verwenden Sie Crawlbase Smart Proxy, ersetzen Sie einfach Ihre Proxy-URL durch Ihr einzigartiges Crawlbase-Token und richten Sie Ihre Anfragen wie folgt ein:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
importieren Zugriffe

URL = „https://www.forbes.com/forbesapi/person/rtb/0/-estWorthPrev/true.json?fields=rank,uri,personName,lastName,gender,source,industries,countryOfCitizenship,birthDate,finalWorth,est“

# Ersetzen _USER_TOKEN_ mit Ihrem Crawlbase Token
Proxy-URL = 'http://_USER_TOKEN_:@smartproxy.crawlbase.com:8012'
Header = {
"Benutzer-Agent": „Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:131.0) Gecko/20100101 Firefox/131.0“
}

Proxys = {"http": Proxy-URL, "https": Proxy-URL}
Antwort = Anfragen.Get(URL=URL, Header=Header, Proxys=Proxys, Überprüfen=falsch)

if Antwort.Statuscode == 200:
drucken(Antwort.json())
sonst:
drucken("Anfrage fehlgeschlagen")

Note: Sie können Ihr Token erhalten durch ein Profil erstellen auf Crawlbase. Sie erhalten 5000 kostenlose Credits für einen einfachen Start. Für die kostenlose Testversion ist keine Kreditkarte erforderlich.

Mit dieser einfachen Einrichtung können Sie IPs nahtlos rotieren lassen und Scraping-Blockaden vermeiden.

Abschließende Überlegungen

Das Scraping von AJAX-Sites ist schwierig, aber mit den richtigen Techniken und Tools machbar. Wenn Sie wissen, wie AJAX funktioniert, und Tools wie Requests, Selenium und Headless-Browser verwenden, können Sie die benötigten Daten abrufen.

Darüber hinaus optimieren Sie Ihren Scraper mit Crawlbase Smart Proxy stellt sicher, dass Sie Daten zuverlässig scrapen können, ohne auf Probleme wie IP-Blockierung oder CAPTCHAs zu stoßen. Dies verbessert nicht nur die Effizienz Ihres Scrapers, sondern spart auch Zeit, indem unnötige Unterbrechungen vermieden werden.

Denken Sie daran, immer die Nutzungsbedingungen der Websites zu respektieren, die Sie scrapen, und stellen Sie sicher, dass beim Scrapen ethische Praktiken eingehalten werden. Mit dem richtigen Ansatz kann das Scrapen von AJAX-Websites ein leistungsstarkes Tool zum Sammeln wertvoller Daten für Ihre Projekte sein.

Häufig gestellte Fragen

F: Was ist AJAX und warum ist es schwierig, Daten von AJAX-Websites zu scrapen?

AJAX (Asynchronous JavaScript and XML) ist eine Technik, die von Websites verwendet wird, um Teile einer Seite zu aktualisieren, ohne die ganze Seite neu zu laden. Dieses dynamische Laden von Inhalten erschwert das Scraping, da die Daten nicht wie bei einer statischen Seite geladen werden. Sie werden im Hintergrund über Anfragen geladen. Um AJAX-Websites zu scrapen, müssen Sie diese Anfragen finden und replizieren, um die Daten zu erhalten, was komplexer ist als das Scraping statischer Seiten.

F: Wie kann ich AJAX-Inhalte scrapen, ohne einen Browser zu verwenden?

Sie können AJAX-Inhalte ohne Browser scrapen, indem Sie den Netzwerkverkehr der Website analysieren und die API-Endpunkte finden, die sie zum Laden der Daten verwendet. Sie können Tools wie die Requests-Bibliothek von Python verwenden, um dieselben API-Aufrufe durchzuführen und die Daten abzurufen. Sie müssen nur die Header und Anforderungsparameter korrekt replizieren. Einige Websites erfordern jedoch JavaScript-Rendering. In diesem Fall benötigen Sie Selenium oder Headless-Browser wie Puppeteer, um den Inhalt vollständig zu laden und zu scrapen.

F. Wie funktioniert Crawlbase Smart Proxy Hilfe beim AJAX-Scraping?

Crawlbase Smart Proxy hilft Ihnen, effizienter zu scrapen, indem es Ihre IP-Adressen verwaltet und CAPTCHAs und Ratenbegrenzungen umgeht. Es bietet rotierende Proxys, sodass Ihre Anfragen so aussehen, als kämen sie von verschiedenen IPs, sodass Sie beim Scrapen von AJAX-Daten nicht blockiert oder gedrosselt werden. Dadurch wird Ihr Scraping-Prozess zuverlässiger und Sie können die Daten ohne Unterbrechungen abrufen.