Menü Schließen

Python Framework zum Web Scraping

Python Logo

Ich starte mit Python und interessiere mich aktuell für das Web Scraping. Web Scraping wird verwendet um den Inhalt von Webseiten auszulesen oder diesen auch ggf. zu verändern. Alternativ bieten sich Web API / Schnittstellen an, mittels denen man direkt zugreifen kann. Ich möchte einzelne Informationen aus Webseiten auslesen und weiter verarbeiten, daher der Einsatz mit Python.

Nachfolgend eine Übersicht über die Frameworks in Pyhton und in wieweit sie für Web Scraping geeignet sind.

Welche Python Frameworks sind beliebt zum Web Scraping?

Nachfolgend 7 Python Frameworks die ich im Netz für die als häufigste für das Web Scraping gefunden habe bzw. die für diesen Zweck gentuzt werden.

BeautifulSoup

Ist eine Scraping Library die Daten von HTML und XML extrahiert. Installation mit pip install beautifulsoup4. Arbeitet mit Python built-in HTML Parser oder 3th Party wie HTML5lib und lxml. Lxml basiert auf C und ist schnell und effizient. Es kann für große und komplexe HTML Dokumente verwendet. Kommt auch mit “defekten” HTML Daten klar. Der HTML Parser und html5lib ist nicht für Zeit kritische Prozesse sinnvoll, aber lxml kann den Prozess beschleunigen.

Scrapy

Ist eine speziell für das Web Scraping und Web Crawling erstellte Framework. Installation mit pip install Scrapy. Scrapy kann Daten von HTML und XML mittels XPath und CSS Selektoren extrahieren. Es beinhaltet eine Telnetkonsole für das Monitoring und Debugging des Crawler. Es beinhaltet Extensions wie Robots.txt, User-agent spoofing, Cookies und Sessions handling. Ebenso werden HTTP Proxies unterstützt. Daten können in CSV, JSON oder XML Dateien gespeichert werden.

Selenium

Kommt mit verschiedenen Extension und Libraries für die Webbrowser Automation. Es beinhaltet WebDriver API, IDE zum erstellen von Test Cases mittels Chrome und Firefox, sowie Grid für die Ausführung von gleichzeitigen Tests auf verschiedene Maschinen. Es benötigt Eclips und den Selenium Web Driver für Python. Selenium ermöglicht automatische Tests, erstellen von Screenshots, unterstützt JavaScript und Ruby, node.js und Java. Mit diesem Framwork kann man headless Browser testen.

Requests

Ist eine HTTP Library die das sammeln von HTTP Calls aus Websourcen ermöglicht. Install mit pip install requests. Es beinhaltet ein Built-in JSON Decoder um mit JSON Daten zu arbeiten. Es beinhaltet ein Request Modul um mit dem Ziel Webserver mittels GET, DELETE, PUT, PATCH und HEAD für HTTP Requsts zu kommunizieren. Ein Vorteil von Requests ist der Support von SOCKS und HTTP(S) Proxy Protokolle, sowie TLS und SSL. Die Library kann JavaScript nicht rendern und nicht für das Data Parsing gedacht.

Urllib3

Urllib3 ist eine beliebte und verbreitete Python Bibliotek die aus URLs den HTML Inhalt von Dokumenten abgreift. Urllib3 beseteht aus vielen Modulen die hierfür verwendet werden, dazu zählen: urllib.request, die für das lesen von meistens HTTP URLs verwendet wird. urllib.parse zum parsen von URLs, urllib.error um Exceptsion von urllib.request abzufangen und auszuwerten und urllib.robotparser zum parsen von robot.txt Files von Webseiten. Es gibt zwei Built-in Module die urllib2 und urllib3 in urllib verwendet werden können. Während urllib2 HTTP Requests sendet und Meta Informationen wie z.B. den Header einer Webseite erhält, gehört urllib3 nicht zur Standard Bibliotek. Es hat mehr Funktionen wie den Support von HTTP und SOCKS, zudem kann es TLS/SSL clientseitig überprüfen.

Lxml

Lxml kann sowohl HTML als auch XML Inhalt parsen. Dabei nutzt es die C Biblioteken libxml2 und libxslt. Damit kombiniert es die Geschwindigkeit von C mit der Einfachheit der Python API. Es gibt die beiden API lxml.etree und lxml.objectify für die Handhabung von XML Dokumenten. Nachteil von Lxml ist das keine unicode strings geparsed werden können und die Daten als valide encodiert geliefert werden müssen. Auch “broken” HTML kann es nicht verarbeiten.

MechanicalSoup

Die hauptsächliche Verwendung von MechanicalSoup liegt in der autmatischen Interaktion mit Webseiten. Die installation ist einfach per “pip install MechanicalSoup”. Es nutzt BeautifulSoup als Bibliotek, durch die man mittels der Tags auf der Webseite hilfe bekommen kann. Es sendet und speicher automatisch Cookies und kann mittels find() und find all() Methoden Daten aus HTML extrahieren. Mittels Script kann ein User sogar Formulare ausfüllen. Weiterhin unterstützt MechanicalSoup CSS und XPath Selektoren. Der Nachteil ist das nur HTML Seiten und kein JavaScript unterstützt wird.

Soweit zur allgemeinen Übersicht, wenn du mit Python und Web Scraping Erfahungen gesammelt hast und hierzu etwas beisteuern möchtest, dann freue ich mich auf deinen Kommentar.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert