41 Punkte von GN⁺ 2024-02-21 | 5 Kommentare | Auf WhatsApp teilen

Vorteile von Web Scraping mit Python

  • Einfache Syntax: ermöglicht schnelles Coding
  • Integrierte Bibliotheken: urllib, lxml usw. unterstützen beim Scraping
  • Ausgereifte Scraping-Bibliotheken: Beautiful Soup, Scrapy usw.
  • Vielseitigkeit: nutzbar zum Aufbau von Datenpipelines
  • Interoperabilität: lässt sich mit anderen Sprachen integrieren und funktioniert gut, wenn Performance wichtig ist

Python-Bibliotheken für Web Scraping

  • BeautifulSoup: HTML/XML-Parsing, flexible Navigation und Suche
  • Scrapy: schnell und skalierbar, mit Middleware und Funktionen für verteiltes Crawling
  • Selenium: Browser-Automatisierung, Verarbeitung JavaScript-lastiger Websites
  • lxml: sehr schneller XML/HTML-Parser
  • pyquery: Zugriff auf HTML-Elemente mit Syntax im jQuery-Stil

Voraussetzungen für Scraping

  • Einrichtung einer virtuellen Umgebung empfohlen
  • Benötigte Bibliotheken: Requests, BeautifulSoup, OS

Auswahl der Ziel-Website für das Scraping

  • Auswahl der Wikipedia-Seite „Liste der Hunderassen“
  • Gut strukturiertes HTML, verschiedene Datenfelder, Bilder enthalten

Schreiben des Scraping-Codes

  • Erforderliche Bibliotheken importieren
  • Mit einem User-Agent einen Browser imitieren
  • HTML-Seite mit requests herunterladen und validieren
  • HTML mit BeautifulSoup parsen
  • Daten mit CSS-Selektoren extrahieren
  • Bilder herunterladen und speichern

Reale Herausforderungen und Best Practices beim Web Scraping

  • Umgang mit dynamischen Inhalten: Selenium oder die Splash-Integration von Scrapy verwenden
  • Sperren vermeiden: Request-Tempo steuern, Browser nachahmen, User-Agents und Proxys rotieren
  • Rate Limits: Crawl-Verzögerungen respektieren, Proxys einsetzen, Requests automatisch anpassen
  • Komplexes HTML-Parsing: leistungsfähige Parser wie lxml nutzen, Selektoren robuster machen

Meinung von GN⁺

  • Wichtigster Punkt: Python ist eine leistungsstarke Sprache für Web Scraping und eignet sich dank einfacher Syntax und umfangreicher Bibliotheken für Web-Scraping-Projekte jeder Größenordnung.
  • Warum interessant: Web Scraping ist eine unverzichtbare Technik für Datenerfassung und -analyse, und dieser Leitfaden vermittelt praktisches Wissen, das Junior-Softwareentwickler in realen Projekten anwenden können.
  • Warum hilfreich: Web Scraping lässt sich in vielen Bereichen einsetzen, und dieser Leitfaden hilft mit realen Herausforderungen und Best Practices dabei, praxistaugliche Scraping-Fähigkeiten aufzubauen.

5 Kommentare

 
yangeok 2024-02-26

Für das Rendern von JavaScript ist Playwright unschlagbar. Die Unterstützung für verschiedene Sprachen ist wirklich sehr breit.

Wenn man es mit Scrapy kombiniert, dürfte es einen Synergieeffekt geben.

 
ikbzbcg15 2024-02-21

Ach was, heutzutage sollte man doch Playwright verwenden.

 
bandoche 2024-02-21

Wenn man Scraping tatsächlich beruflich macht, sind die größeren Herausforderungen als gedacht vor allem der Umgang mit dem Browser (oft fehleranfälliger Chrome WebDriver) und das Umgehen von Sperren (verschiedene Captchas).

 
GN⁺ 2024-02-21
Hacker-News-Kommentare
  • Es ist wichtig, Web-Crawling und Scraping voneinander zu trennen. Crawling ist der Schritt, bei dem URLs gefunden und HTML-Inhalte abgerufen werden, und Scraping ist der Schritt, bei dem strukturierte Daten aus HTML extrahiert werden. Wenn man die beiden Schritte trennt, kann man den Scraper später anpassen und schnell erneut auf vorhandene Daten anwenden.
  • Als Python-Tool für Web-Scraping wird Playwright empfohlen. Es ist ein sehr leistungsfähiges und gut konzipiertes Browser-Automatisierungstool, und es wird das shot-scraper-CLI-Tool verwendet, mit dem sich Webseiten direkt über die Kommandozeile scrapen lassen.
  • Dass SaaS-Unternehmen in Blogposts ihre eigenen Produkte bewerben, ist Teil des Marketings, aber es ist immer wieder amüsant, wenn sie Einsteigern ein Problem zum ersten Mal vorstellen und dabei gleich ihr eigenes Produkt als Lösung präsentieren.
  • Es kann hilfreich sein, <domain>/robots.txt zu prüfen, wo sich nützliche Informationen zum Scraping einer Website finden, und Daten statt durch das Parsen von HTML-Tags über strukturierte Metadaten zu extrahieren. Es gibt auch Bibliotheken, die dies als JSON extrahieren.
  • Es wird infrage gestellt, warum Web-Scraping mit Node.js anstelle von Python so beliebt ist. In npm gibt es gut gemachte Pakete zum DOM-Parsing, und da JavaScript verwendet wird, kann man DOM-Funktionen auf natürlichere Weise nutzen.
  • Mit read_html von pandas lassen sich Links unkompliziert abrufen. Damit können Tabellendaten von Websites leicht extrahiert werden.
  • Nach der Ermüdung durch wiederholte und unkreative Web-Scraping-Arbeiten wird nun versucht, den gesamten Prozess mit LLMs (Large Language Models) zu automatisieren. Es ist effizient, mit LLMs Scraper-Code zu erzeugen und anzupassen, der sich an Änderungen von Websites anpasst.
  • Es wird bezweifelt, wie viele „vollständige Leitfäden“ es zum Python-Scraping eigentlich gibt.
  • Für moderne Web-Scraping-Setups wird ein Browser-Agent benötigt, und um Daten von großen Social-Media-Plattformen oder aus Artikeln der New York Times zu beziehen, muss man möglicherweise eigene Tools bauen.
  • Die Bibliothek requests-cache ist bei Scraping-Arbeiten hilfreich. Sie ersetzt die Bibliothek requests, cached aber alle Antworten in einer SQLite-Datenbank, was nützlich ist, wenn man das Skript anpassen muss, nachdem eine Website Einschränkungen verhängt hat.
 
xguru 2024-02-21

Wichtig an diesem Kommentar ist

Dass SaaS-Unternehmen in Blogposts ihre eigenen Produkte bewerben, ist zwar Teil des Marketings, aber es ist immer wieder interessant, wenn sie Anfängern ein Problem zum ersten Mal vorstellen und dann ihr eigenes Produkt als Lösung präsentieren.

Genau das ist der Punkt. Man sollte solche Artikel immer mit dem Bewusstsein lesen, dass am Ende Eigenwerbung für das eigene Produkt enthalten ist. Andersherum gesagt denke ich, dass auch heimische Unternehmen diese Art grundsätzlich nutzen sollten.