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.
Interessiert in verschiedenste IT Themen, schreibe ich in diesem Blog über Software, Hardware, Smart Home, Games und vieles mehr. Ich berichte z.B. über die Installation und Konfiguration von Software als auch von Problemen mit dieser. News sind ebenso spannend, sodass ich auch über Updates, Releases und Neuigkeiten aus der IT berichte. Letztendlich nutze ich Taste-of-IT als eigene Dokumentation und Anlaufstelle bei wiederkehrenden Themen. Ich hoffe ich kann dich ebenso informieren und bei Problemen eine schnelle Lösung anbieten. Wer meinen Aufwand unterstützen möchte, kann gerne eine Tasse oder Pod Kaffe per PayPal spenden – vielen Dank.