Web Scraping mit Ajax: Kompletter Leitfaden

Autor :

Reagieren :

Kommentieren

Mit Ajax wird eine Seite nicht auf einmal angezeigt: Bestimmte Informationen erscheinen nach und nach.

das Web Scraping mit Ajax besteht daher darin, spezielle Methoden anzuwenden, um diese dynamischen Daten abrufen.

Web Scraping funktioniert auch mit AJAX.
Web Scraping funktioniert auch mit AJAX. ©Christina für Alucare.fr

Was Sie über Web Scraping und AJAX wissen sollten

Zur Erinnerung: Der Web Scraping ist eine Technik, mit der eine Website beobachtet und Informationen automatisch sammeln. In der Praxis geht es darum, den HTML-Code einer Seite zu analysieren, um nützliche Daten zu gewinnen.

AJAX (Asynchronous JavaScript and XML) ist eine Technologie, mit der eine Website Informationen laden oder aktualisieren kann, ohne die gesamte Seite neu zu laden.

👉 Wie funktioniert das?

Der Browser sendet kleine asynchrone Anfragen an den Server im Hintergrund. Der Server antwortet mit den Daten, und die Seite zeigt sie sofort an., ohne Nachladen der Rest des Inhalts.

Zusammenfassend lässt sich sagen, dass AJAX neue Informationen auf der Seite anzeigt, ohne dass die gesamte Seite neu geladen wird. Dadurch wird das Web schneller und interaktiver, allerdings wird das Scraping dadurch komplexer.

AJAX ermöglicht das Laden von Daten im Hintergrund, ohne die gesamte Seite neu zu laden.
Mit AJAX können Daten im Hintergrund geladen werden, ohne die gesamte Seite neu zu laden. ©Christina für Alucare.fr

👉 Warum komplexer?

  • Der von AJAX generierte Inhalt :

Wenn eine Website AJAX verwendet, um Inhalte im Hintergrund zu laden, sind diese Inhalte im ursprünglicher HTML-Quellcode. Das bedeutet, dass ein herkömmlicher Scraper, der lediglich den HTML-Code der Seite beim Laden analysiert, diese Informationen nicht sehen oder erfassen kann, bevor sie tatsächlich per AJAX geladen.

  • Der Scraper und dynamische Inhalte :

Ein klassischer Scraper sieht nur statische Inhalte. Dynamisch über AJAX geladene Daten entziehen sich daher seiner Analyse. Um sie abzurufen, müssen Headless-Browser oder APIs verwendet werden, die JavaScript ausführen und AJAX-Anfragen simulieren können.

Was sind die Methoden und Werkzeuge für AJAX-Scraping?

Es gibt mehrere Methoden, um Websites mit AJAX zu scrapen.

Methode 1: Reproduktion von AJAX-Anfragen

Dies ist die leistungsfähigste Methode, um dynamische Daten abrufen.

Das Prinzip ist einfach : Anstatt die gesamte Seite wiederzugeben, werden die an den Server gesendeten AJAX-Anfragen abgefangen und direkt reproduziert, um die Rohdaten zu erhalten.

✅ Es handelt sich um eine Methode:

  • Sehr schnell.
  • Leicht, da sie kein vollständiges Rendern der Seite erfordert.
  • Wer Probleme umgeht im Zusammenhang mit der JavaScript-Wiedergabe.

❌ Andererseits:

  • Sie ist komplexer einzuführen.
  • Erfordert eine sorgfältige Analyse Anfragen und Parameter.

🌐 Was die Tools und Bibliotheken angeht, sind zu nennen:

JS und Python bieten zwei Bibliotheken zur Reproduktion von AJAX-Anfragen: axios und requests.
JS und Python bieten zwei Bibliotheken zur Reproduktion von AJAX-Anfragen: axios und requests. ©Christina für Alucare.fr

Methode 2: Verwendung eines “headless” Browsers”

Das ist die einfachste Methode, um Dynamische Seiten scrapen.

das Das Prinzip besteht darin, einen echten Webbrowser zu automatisieren. ohne grafische Benutzeroberfläche, damit er die Seite genau so darstellt, wie es ein Benutzer tun würde.

✅ Diese Methode:

  • Genau abkratzen Was der Benutzer sieht.
  • Ost einfach umzusetzen.

❌ Allerdings ist sie:

  • Langsamer.
  • Ressourcenintensiv.

🌐 Die zu verwendenden Tools oder Bibliotheken sind:

  • Selenium : vielseitiger Automat für Browser.
  • Playwright : modern, schnell, mehrere Browser.
  • Puppenspieler : Spezialisiert für Chrome/Chromium.
Puppeteer, Playwright und Selenium sind Tools, die Webbrowser automatisieren, um dynamische Seiten zu scrapen.
Puppeteer, Playwright und Selenium sind Tools, die Webbrowser automatisieren, um dynamische Seiten zu scrapen. ©Christina für Alucare.fr

Diese Tools sind besonders beliebt für web scraping mit Python.

Methode 3: All-in-One-Scraping-APIs“

Einige Plattformen bieten Umfassende Dienstleistungen für das Scraping. Als Beispiele seien genannt: Bright Data, ZenRows, ScrapingBee, Crawlbase.

Sie verwalten automatisch die JavaScript-Rendering, Sie Proxies und dieDatenextraktion.

✅ Diese Plattformen:

  • Sind extrem einfach und zuverlässig.
  • Erfordert keineKeine Infrastrukturverwaltung.

❌ Allerdings:

  • das Die Kosten sind manchmal hoch..
  • Es gibt weniger Kontrolle über den Prozess.
Bright Data ist eine All-in-One-Scraping-API."
Bright Data ist eine All-in-One-API für das Scraping. ©Christina für Alucare.fr

Wie kann man eine Website mit AJAX scrapen?

Nachdem wir die theoretischen Methoden vorgestellt haben, wollen wir nun anhand eines konkreten Beispiels in Python sehen, wie man eine Website, die ihre Artikel über AJAX lädt, konkret scrapen kann.

  1. Analysieren von AJAX-Anfragen mit Entwicklertools
  • ✔ Öffnen Sie die Entwicklungswerkzeuge Ihres Browsers (F12 oder Rechtsklick > “Untersuchen”).
  • ✔ Gehen Sie zur Registerkarte “Netzwerk” und laden Sie die Seite neu.
  • ✔ Sie können die Anfragen durch die Website, einschließlich derjenigen, die Artikel über AJAX laden.
  • ✔ Suchen Sie nach Anfragen vom Typ “XHR” oder “fetch”, die für das Laden der Daten verantwortlich sind.
  1. Die Methode auswählen 

Sobald Sie die AJAX-Anfrage identifiziert haben, die die Daten abruft, haben Sie zwei Möglichkeiten:

  • ❎ Wiedergabe der Anfrage: Sie können dieselbe Abfrage einfach in Python reproduzieren, indem Sie eine Bibliothek wie Anfragen. So können Sie die Daten direkt im JSON- oder HTML-Format abrufen.
  • Headless-Browser: Wenn die Website komplexere Interaktionen verwendet oder JavaScript zur Darstellung der Daten benötigt, können Sie sich für einen Headless-Browser entscheiden, wie z. B. Playwright Wo Selenium, mit dem Sie die Website wie ein echter Benutzer laden und mit ihr interagieren können.
  1. Den Code schreiben
import requests # URL der von Ihnen identifizierten AJAX-Anfrage url = 'https://example.com/ajax-endpoint'

# Parameter der Anfrage (Beispiel, je nach den beobachteten Daten anzupassen) params = { 'page': 1, 'category': 'technology' } # Senden der GET-Anfrage, um die Daten zu erhalten response = requests.get(url, params=params)

# Überprüfen, ob die Anfrage erfolgreich war if response.status_code == 200: # Anzeigen der JSON-Daten data = response.json() print(data) else: print(f"Fehler {response.status_code}")

👉 Ausführliche Erklärung :

  • Importanfragen : Importieren der Bibliothek “requests”, um HTTP-Anfragen zu senden.
  • https://example.com/ajax-endpoint : Ersetzen Sie diese URL durch die URL der AJAX-Anfrage, die Sie in den Entwicklertools sehen.
  • Ein Statuscode 200 bedeutet, dass die Anfrage erfolgreich verarbeitet wurde.
  • response.json() konvertiert die JSON-Antwort in ein Python-Wörterbuch.
  • print(data) : Anzeige der extrahierten Daten (z. B. eine Liste von Artikeln oder andere Informationen).
  • sonst : Wenn die Anfrage fehlschlägt (anderer Statuscode), wird der Fehler angezeigt.
  • print(f"Fehler {response.status_code}") : Anzeige des Fehlercodes (z. B. 404 für “Not Found”).
  1. Extrahieren Sie Daten aus JSON oder gerendertem HTML.

Sobald Sie die Antwort auf die AJAX-Anfrage erhalten haben, in der Regel im JSON- oder HTML-Format, müssen Sie die relevanten Daten extrahieren.

  • Wenn die Daten im JSON-Format vorliegen: Sie können response.json() um sie in ein Python-Wörterbuch umzuwandeln. Anschließend können Sie mithilfe der JSON-Schlüssel auf bestimmte Werte zugreifen.
  • Wenn die Daten im HTML-Format vorliegen: Sie können BeautifulSoup aus der Bibliothek bs4 um HTML zu analysieren und die gewünschten Informationen zu extrahieren.

Welche AJAX-Scraping-Methode soll man wählen?

Angesichts der verschiedenen möglichen Ansätze ist es wichtig, die AJAX-Scraping-Methoden zu vergleichen, um diejenige auszuwählen, die Ihren Anforderungen am besten entspricht.

Methode Geschwindigkeit Komplexität Kosten Am besten geeignet für …
Reproduktion der Anfrage Sehr schnell Hoch Schwach Groß angelegtes Scraping, strukturierte Daten.
Headless-Browser Langsam Bedeuten Schwach Schnelle Projekte, komplexe Websites, Anfänger.
Scraping-API Schnell Sehr gering Hoch Kritische Projekte ohne Infrastrukturwartung.

Was sind die Herausforderungen beim AJAX-Scraping und wie lassen sie sich lösen?

Bevor man sich mit AJAX-Scraping befasst, sollte man sich über die damit verbundenen Herausforderungen und vor allem über die Tricks zu deren Umgehung im Klaren sein.

Herausforderung 1: Auf den ersten Blick unsichtbare Inhalte

➡ Wie bereits erwähnt, werden beim Laden einer Seite mit AJAX nicht alle Inhalte sofort im Quellcode angezeigt. Der ursprüngliche HTML-Code ist manchmal leer., und die Daten kommen erst nach Ausführung des JavaScripts an.

✅ Die Lösung besteht darin, Tools zu verwenden, die in der Lage sind, “die Webseite ”zurückgeben“, wie ein Headless-Browser. Sie führen JavaScript aus und rufen Inhalte genau wie ein menschlicher Benutzer ab.

Herausforderung 2: Identifizierung von AJAX-Anfragen

➡ Die richtige AJAX-Anfrage zu finden, ist nicht immer einfach. Die Daten können versteckt in mehreren Netzwerkaufrufen, gemischt mit anderen Dateien.

✅ Die Lösung:

  • Entwicklertools des Browsers öffnen (F12 > Registerkarte Netzwerk/Network).
  • XHR/Fetch-Anfragen suchen um diejenigen zu finden, die JSON zurückgeben.
  • Sobald Sie die richtige Anfrage identifiziert haben, können Sie sie mit Bibliotheken reproduzieren wie Requests oder Axios.

Herausforderung 3: Verwaltung der Ladezeiten

➡ Die von AJAX geladenen Daten können langsam erscheinen. Wenn der Scraper die Seite zu früh liest, findet er nichts.

✅ Dazu ist Folgendes erforderlich:

  • Verwenden Sie schläft (feste Pause in Sekunden), um vor dem Lesen der Seite zu warten.
  • Verwenden Sie wartet implizit/explizit.

Implizites Warten : automatisch warten, bis die Elemente verfügbar sind.
Explizite Wartezeit : genau auf ein bestimmtes Element oder eine bestimmte Bedingung warten.

Häufig gestellte Fragen

Kann ich BeautifulSoup verwenden, um eine Website mit AJAX zu scrapen?

❌ Nicht direkt.

BeautifulSoup ist eine statische Parsing-Bibliothek: Sie liest nur den ursprünglich geladenen HTML-Code.

👉 Da AJAX Inhalte im Hintergrund über JavaScript lädt, muss man BeautifulSoup vervollständigen mit Tools, die dieses JavaScript ausführen können (Selenium Wo Playwright) oder AJAX-Anfragen direkt abzufangen.

Wie geht man mit Authentifizierungsfehlern oder Sitzungsköpfen beim Scraping einer AJAX-Website um?

Geschützte Websites können Fehler 401 (nicht autorisiert) oder 403 (verboten) zurückgeben, wenn die Anfragen nicht die richtigen Kekse Wo HTTP-Header.

✅ Die Lösung besteht darin, diese Informationen abfangen (Cookies, Tokens, Header) beim ersten Surfen und diese dann in simulierten AJAX-Anfragen wiederzuverwenden.

Wie kann man eine Website mit “Infinite Scrolling” oder “Load More”-Buttons scrapen?

das “Unendliches Scrollen” ist eine Form der AJAX-Ladung. Um sie zu automatisieren, muss man:

  • 🔥 AJAX-Anfragen identifizieren der zusätzliche Inhalte lädt und wiedergibt;
  • 🔥 Wo Klicks auf die Schaltfläche “Mehr laden” simulieren” über einen Headless-Browser wie Selenium oder Puppeteer, bis alle Daten erreicht sind.

Gibt es Chrome-Erweiterungen für AJAX-Scraping?

Ja, mehrere Chrome-Erweiterungen erleichtern das Scraping AJAX für einfache Anforderungen, ohne Programmierung.

Zu den bekanntesten zählen:

  • Web Scraper
  • Data Miner
  • Instant Data Scraper
Instant Data Scraper ist eine Chrome-Erweiterung, mit der Sie ganz einfach Daten von Webseiten sammeln können, ohne programmieren zu müssen.
Instant Data Scraper ist eine Chrome-Erweiterung, mit der sich Daten von Webseiten ganz einfach und ohne Programmierkenntnisse sammeln lassen. ©Christina für Alucare.fr

Was ist der Unterschied zwischen einem expliziten und einem impliziten “Wait” bei Selenium/Playwright?

  • EIN implizite Wartezeit ist eine globale Wartezeit, die auf alle Elemente angewendet wird. Das bedeutet, dass das Skript eine bestimmte Zeit wartet, bevor es einen Fehler auslöst, wenn ein Element nicht angezeigt wird.
  • EIN explizites Warten ist eine bedingte Wartezeit für ein bestimmtes Element. Es wartet nur, wenn es notwendig ist, bis eine bestimmte Bedingung erfüllt ist.

In der Praxis ist “Wait explicite” vorzuziehen, um unnötige Verzögerungen und Fehler zu vermeiden.

💬 Im Großen und Ganzen, Scraper mit AJAX Es erfordert etwas mehr Geschick, aber mit den richtigen Methoden entgeht Ihnen nichts.

Und Sie, welche Methode verwenden Sie zum Scrapen von AJAX-Websites? Teilen Sie Ihre Tipps in den Kommentaren mit.

Gefällt es Ihnen? Teilen Sie es!

Dieser Inhalt ist ursprünglich auf Französisch (Siehe den Redakteur oder die Redakteurin direkt unten.). Er wurde mit Deepl und/oder der Google-Übersetzungs-API in verschiedene Sprachen übersetzt und anschließend Korrektur gelesen, um in möglichst vielen Ländern Hilfe anbieten zu können. Diese Übersetzung kostet uns mehrere Tausend Euro pro Monat. Wenn sie zu 100 % nicht perfekt ist, hinterlassen Sie uns bitte einen Kommentar, damit wir sie korrigieren können. Wenn Sie daran interessiert sind, übersetzte Artikel zu lektorieren und ihre Qualität zu verbessern, schicken Sie uns bitte eine E-Mail über das Kontaktformular!
Wir freuen uns über Ihr Feedback, um unsere Inhalte zu verbessern. Wenn Sie Verbesserungsvorschläge machen möchten, nutzen Sie bitte unser Kontaktformular oder hinterlassen Sie unten einen Kommentar. Ihr Feedback hilft uns immer, die Qualität unserer Website zu verbessern Alucare.fr


Alucare ist ein unabhängiges Medium. Unterstützen Sie uns, indem Sie uns zu Ihren Google News-Favoriten hinzufügen:

Veröffentlichen Sie einen Kommentar im Diskussionsforum