Einführung in dynamisches Web-Scraping
Beim Web-Scraping werden Daten aus Websites extrahiert, was bei sich häufig ändernden dynamischen Inhalten eine besondere Herausforderung darstellen kann. Unsere Experten Greg, Dario und Diego geben praktische Tipps zur Bewältigung dieser Herausforderungen mit Tools wie Puppeteer, Selenium und Playwright.
Greg: Greg lebt in San Francisco und ist bei Andela im Bereich traditionelle Softwareentwicklung und Web-Scraping tätig.
Dario: Dario kommt aus Argentinien und arbeitet bei Mabel. Zu seinen Hauptaufgaben gehören die Automatisierung von Qualitätssicherungs-Tools mit geringem Programmieraufwand sowie die Mitarbeit an PuppeteerSharp und der .NET-Version von Playwright.
Diego: Diego stößt aus Valencia, Spanien, zum Team. Als Leiter des Selenium-Projekts ist er außerdem für Open-Source-Projekte bei Sauce Labs, einer Cloud-Testplattform, zuständig.
Wichtige Diskussionspunkte
1. Mit HTML-Änderungen Schritt halten
Greg betonte, welche Bedeutung der Auswahl zuverlässiger Selektoren zukommt. Lange Ketten hartcodierter Selektoren wie div > div > p
sollten vermieden werden. Stattdessen sollten stabilere Selektoren wie aria-label
oder textbasierte Selektoren eingesetzt werden. Noch besser wäre es, bei Möglichkeit API-Anfragen abzufangen, da diese sich im Gegensatz zu DOMseltener ändern.
Tools und Techniken:
- Mozilla-Lesbarkeit: Konvertiert komplexes HTML in ein sauberes, lesbares Format.
- API-Abfangen: Greifen Sie direkt auf Datenendpunkte zu, um DOM-Änderungen zu umgehen.
2. Navigieren in clientseitigem Routing und Single Page Applications (SPAs)
In seinem Vortrag ging Dario auf den Umgang mit SPAs ein, die häufig clientseitiges Routing einsetzen, wodurch die Datenextraktion schwierig wird. Zu den wichtigsten Punkten gehörten:
- Vorsicht bei Erstladungen: Führen Sie mehrere Überprüfungen durch, um sicherzustellen, dass die Seite vollständig geladen ist.
- Prüfung des Kontexts: Vergewissern Sie sich, dass Sie sich bei mehrstufigen Prozessen im richtigen Schritt befinden, indem Sie Titel oder andere stabile Elemente überprüfen.
- Tools: Nutzen Sie die Navigations- und Wartefunktionen von Playwright oder Puppeteer auf effektive Weise.
3. Abrufen asynchron geladener Daten
Diego empfahl die Verwendung von Frameworks, bei denen die Synchronisierung automatisch erfolgt, wie z. B. Selenide für Java oder WebDriverIO für JavaScript. Diese Frameworks vereinfachen das Warten, bis Elemente durch integrierte Methoden geladen sind.
Tipps:
- Ereignisgesteuerte Prädikate: Nutzen Sie
waitForFunction
, um auf bestimmte Zustände im DOM zu warten. - Abfangen von Anfragen: Erfassen und verarbeiten Sie bei Möglichkeit API-Antworten direkt.
4. Nachahmung von Benutzerinteraktionen für verzögertes Laden
Greg stellte Techniken für den Umgang mit verzögertem Laden vor, bei denen Inhalte geladen werden, während Sie mit der Seite interagieren. Zu den wichtigsten Strategien gehörten:
- Tastaturinteraktionen: Verwenden Sie die Bild-ab-Taste, um das Laden einzuleiten.
- Inkrementelle Datenerfassung: Speichern Sie Daten in Blöcken, um bei einem Skriptfehler Datenverluste zu vermeiden.
- Bei Möglichkeit Benutzerinteraktionen vermeiden: Fangen Sie API-Antworten direkt ab, um Benutzeraktionen zu umgehen.
5. Informationsextraktion aus Shadow-DOM-Komponenten
Dario erklärte, wie man Shadow DOM einsetzt, um Teile der Webseite zu kapseln und das Scrapen zu erschweren. Zu den wichtigsten Punkten gehörten:
- Open vs. Closed Shadow DOM verstehen: Closed Shadow DOM: Die meisten Tools können ein Open Shadow DOM durchdringen, ein Closed Shadow DOM hingegen nicht.
- Manuelle JavaScript-Verarbeitung: Verwenden Sie die
shadowRoot-
Eigenschaft, um manuell auf Elemente innerhalb von Shadow DOM zuzugreifen. - Framework-Unterstützung: Tools wie Playwright und Puppeteer verwalten Shadow DOM-Elemente effektiv.
6. Erfassung ganzseitiger Screenshots
Diego empfahl die Verwendung von Firefox zur Erstellung ganzseitiger Screenshots, da es über einen nativen Befehl speziell zu diesem Zweck verfügt. Die Integration von Selenium in das Chrome DevTools-Protokoll ist eine weitere effektive Methode.
Tipps:
- Netzwerk-Leerlauf: Vergewissern Sie sich, dass vor der Erstellung von Screenshots alle Elemente geladen sind.
- Einsatz integrierter Methoden: Tools wie die
FullPage
-Option von Puppeteer vereinfachen den Prozess.
7. Groß angelegte Vorgänge
Jacob erörterte die Herausforderungen bei der Skalierung von Web-Scraping-Vorgängen, wie z. B. die Verwaltung von Fingerabdrücken, die Sitzungsverwaltung und die IP-Adressrotation. Dabei stellte er den Scraping-Browser von Bright Data vor, der diese Komplexitäten abstrahiert und Entwicklern ermöglicht, sich auf das Scripting zu konzentrieren.
Hauptmerkmale:
- Sitzungsverwaltung: Verwalten Sie Sitzungen automatisch, um einer Entdeckung zu entgehen.
- IP-Rotation: Verwenden Sie eine Vielzahl von IP-Adressen, mit denen Sie verschiedene Benutzer simulieren können.
- Testumgebung: Testen Sie Ihre Scripts in einer kontrollierten Umgebung, bevor Sie sie hochskalieren.
Interaktive Fragerunde
Das Webinar endete mit einer Fragerunde, in der die Teilnehmer Fragen zu verschiedenen Aspekten des Web-Scrapings stellten. Zu den wichtigsten Themen gehörten:
- Abfangen von Frontend-API-Aufrufen: Verwenden Sie die DevTools des Browsers, um API-Anfragen zu identifizieren und zu replizieren.
- Zuverlässige Selektoren: Vermeiden Sie die Verwendung von XPath und nutzen Sie stattdessen stabilere und zuverlässigere Selektoren.
- Authentifizierung: Speichern Sie Authentifizierungstoken im Cache und führen Sie bei Bedarf eine manuelle Zwei-Faktor-Authentifizierung durch.
Fazit
In diesem Webinar wurde Entwicklern, die sich mit dynamischem Web-Scraping vertraut machen möchten, umfangreiches Wissen vermittelt. Durch die Nutzung der von Greg, Dario und Diego geteilten Erkenntnisse können Sie Ihre Scraping-Techniken optimieren und Ihre Skripte robuster und leistungsfähiger gestalten. Wer die Live-Sitzung verpasst hat, dem steht in Kürze die Aufzeichnung zur Verfügung. Bleiben Sie also dran, um weitere lehrreiche Inhalte von Bright Data zu erhalten, die Ihnen in den Bereichen Web-Scraping und Datenextraktion zu Höchstleistungen verhelfen.
Viel Spaß beim Scrapen!