5.3 Anhang: Werkzeuge für Webscraping

Um Daten von Webseiten programmatisch mit Python zu gewinnen, um diese auch gleich weiterzuverarbeiten,  existieren sehr viele Möglichkeiten, wovon wir hier auf fünf Libraries, die in der Developer-Community populär sind, eingehen möchten:

  • Requests
  • BeautifulSoup
  • lxml
  • Selenium
  • Scrapy

Darüberhinaus können für kleinere Projekte auf Browser Plugin’s verwendet werden, allerdings sind diese ungeeignet bei grossen Datenmengen und sind auch nur dafür gedacht, das Webscraping vom eigenen Desktop durchzuführen.

I. A. muss eine Kombination der obigen Libraries verwendet werden: Die Grundsätzliche Vorgehensweise ist, dass mit Requests eine HTTP Anfrage abgesetzt und der Inhalt eine Webseite geladen wird. Mit Parserlibraries (BeautifulSoup, lxml, aber auch Selenium) können auf spezifische Inhalte der HTML Dokumente mittels Angabe von CSS, XPATH  Selektoren zugegriffen, die dann in einer eigenen Datenstruktur oder Datenbank abgelegt werden. BeautifulSoup is sehr einfach zu bedienen, aber langsam – lxml sehr schnell, aber auch komplex.

Kommt man mit BeautifulSoup und lxml, nicht zu den gewünscheten Inhalten, weil z.B. die Seiten dynamisch geladen werden (in dem man etwa die Scrollbar nach unten bewegt, oder auf einen mit JavaScript implementierten load all Button clickt), kann man mit Hilfe von Selenium eine Browsersitzung simulieren und programmatisch auf einen Button klicken, um alle Daten einer Seite zu laden.

Die Library Scrapy ist ein Webscraping-Framework, dass sehr mächtig und komplex zugleich ist. Hiermit können eigene Crawler und Parser erstellt werden. Z. B. ist es damit möglich, mehrstufig arbeitende Crawler zu erstellen: Die Startseite für den Crawl enthält Liste der Auktionen, von hier gelangt man zu einer Liste von Losen, von hier wiederum auf eine Detailseite für ein bestimmtes Kunstwerk. Scrapy ist performant und man kann die unterschiedlichen Vorgänge (verschiedene Crawler, die gleichzeitig  Inhalte von unterschiedliche Seiten erfassen, sowie die einzelnen Parser) einfach parallel arbeiten lassen. Scrapy hat den Nachteil, dass es eine hohen Einarbeitungaufwand erfordert. Darüberhinaus muss abhängig von der Zielseite auch hier Selenium eingesetzt werden.

Zusammengefasst, gibt es keine All-in-1 Lösung für Webscraping. Welche Library im einzelnen verwendet wird, hängt davon ab, auf welchen Technologien die Zielseite basiert. Eine gute Übersicht über die o.g. Libraries für Python findet sich unter https://elitedatascience.com/python-web-scraping-libraries

Für die Weiterführung des Projektes empfehlen wir Scrapy in Kombination mit Selenium, da viele Seiten mit dynamisch geladenen Inhalten arbeiten und Javascript  verwenden.

 

 

 

Übergeordnetes Dokument:Einleitung & Gliederung

Diskussion (0)

Für diesen Beitrag gibt es noch keine Kommentare.

Für diesen Beitrag wurde die Kommentarfunktion deaktiviert.