Möchten Sie Web Scraping mit Python lernen, sind sich aber nicht sicher, ob Sie Beautiful Soup, Selenium oder Scrapy für Ihr nächstes Projekt verwenden sollen? Obwohl all diese Python-Bibliotheken und -Frameworks für sich genommen leistungsfähig sind, werden sie nicht berücksichtigt alle Web-Scraping-Anforderungen, und daher ist es wichtig zu wissen, welches Tool Sie für ein bestimmtes verwenden sollten Arbeit.
Werfen wir einen Blick auf die Unterschiede zwischen Beautiful Soup, Scrapy und Selenium, damit Sie eine kluge Entscheidung treffen können, bevor Sie Ihr nächstes Python-Web-Scraping-Projekt starten.
1. Benutzerfreundlichkeit
Wenn Sie ein Anfänger sind, wäre Ihre erste Anforderung eine Bibliothek, die einfach zu erlernen und zu verwenden ist. Beautiful Soup bietet Ihnen alle rudimentären Tools, die Sie zum Scrapen des Webs benötigen, und das vor allem hilfreich für Leute, die wenig Erfahrung mit Python haben, aber mit dem Web durchstarten wollen kratzen.
Die einzige Einschränkung ist, dass Beautiful Soup aufgrund seiner Einfachheit nicht so stark ist wie Scrapy oder Selenium. Programmierer mit Entwicklungserfahrung können sowohl Scrapy als auch Selenium leicht beherrschen, aber für Anfänger ist die Das Erstellen des ersten Projekts kann viel Zeit in Anspruch nehmen, wenn sie sich für diese Frameworks anstelle von Beautiful entscheiden Suppe.
Um den Titel-Tag-Inhalt auf example.com mit Beautiful Soup zu schaben, würden Sie den folgenden Code verwenden:
url = "https://example.com/"
res = Anfragen.get (URL).Text
Suppe = SchöneSuppe (res, 'html.parser')
title = Suppe.finden ("Titel").Text
drucken(Titel)
Um ähnliche Ergebnisse mit Selen zu erzielen, würden Sie schreiben:
url = "https://example.com"
Treiber = Webtreiber. Chrom("path/to/chromedriver")
Treiber.erhalten(URL)
title = driver.find_element (Von. TAG_NAME, "Titel").get_attribute('Text')
drucken(Titel)
Die Dateistruktur eines Scrapy-Projekts besteht aus mehreren Dateien, was zu seiner Komplexität beiträgt. Der folgende Code entfernt den Titel von example.com:
importieren kratzigKlasseTitelSpider(kratzig. Spinne):
Name = 'Titel'
start_urls = ['https://example.com']
defparsen(selbst, Antwort):
Ertrag {
'Name': Antwort.css('Titel'),
}
Wenn Sie Daten von einem Dienst extrahieren möchten, der eine offizielle API anbietet, ist dies möglicherweise eine kluge Entscheidung Verwenden Sie die API, anstatt einen Web Scraper zu entwickeln.
2. Scraping-Geschwindigkeit und Parallelisierung
Von den dreien ist Scrapy der klare Gewinner, wenn es um Geschwindigkeit geht. Dies liegt daran, dass es standardmäßig die Parallelisierung unterstützt. Mit Scrapy können Sie mehrere HTTP-Anforderungen gleichzeitig senden, und wenn das Skript den HTML-Code für die erste Gruppe von Anforderungen heruntergeladen hat, ist es bereit, einen weiteren Stapel zu senden.
Mit Beautiful Soup können Sie die Threading-Bibliothek verwenden, um gleichzeitige HTTP-Anforderungen zu senden, aber das ist nicht bequem und Sie müssen Multithreading lernen, um dies zu tun. Auf Selenium ist es unmöglich, eine Parallelisierung zu erreichen, ohne mehrere Browserinstanzen zu starten.
Wenn Sie diese drei Web-Scraping-Tools in Bezug auf die Geschwindigkeit einordnen würden, ist Scrapy das schnellste, gefolgt von Beautiful Soup und Selenium.
3. Speichernutzung
Selenium ist eine Browser-Automatisierungs-API, die ihre Anwendungen in gefunden hat das Web-Scraping-Feld. Wenn Sie Selenium zum Scrapen einer Website verwenden, wird eine Headless-Browser-Instanz erstellt, die im Hintergrund ausgeführt wird. Dies macht Selen im Vergleich zu Beautiful Soup und Scrapy zu einem ressourcenintensiven Werkzeug.
Da letztere vollständig in der Befehlszeile arbeiten, verbrauchen sie weniger Systemressourcen und bieten eine bessere Leistung als Selenium.
4. Abhängigkeitsanforderungen
Beautiful Soup ist eine Sammlung von Parsing-Tools, mit denen Sie Daten aus HTML- und XML-Dateien extrahieren können. Es wird mit nichts anderem geliefert. Sie müssen Bibliotheken wie verwenden Anfragen oder urlib um HTTP-Anfragen zu stellen, integrierte Parser zum Analysieren von HTML/XML und zusätzliche Bibliotheken zum Implementieren von Proxys oder Datenbankunterstützung.
Scrapy hingegen bringt den ganzen Kram mit. Sie erhalten Tools zum Senden von Anfragen, Analysieren des heruntergeladenen Codes, Ausführen von Operationen an den extrahierten Daten und Speichern der gekratzten Informationen. Sie können Scrapy mithilfe von Erweiterungen und Middleware weitere Funktionen hinzufügen, aber das kommt später.
Mit Selenium laden Sie einen Webtreiber für den Browser herunter, den Sie automatisieren möchten. Um andere Funktionen wie Datenspeicherung und Proxy-Unterstützung zu implementieren, benötigen Sie Module von Drittanbietern.
5. Dokumentationsqualität
Insgesamt ist jede Projektdokumentation gut strukturiert und beschreibt jede Methode anhand von Beispielen. Die Effektivität einer Projektdokumentation hängt aber auch stark vom Leser ab.
Die Dokumentation von Beautiful Soup ist viel besser für Anfänger, die mit Web Scraping beginnen. Selenium und Scrapy verfügen zweifellos über eine detaillierte Dokumentation, aber der Fachjargon kann viele Neulinge überraschen.
Wenn Sie Erfahrung mit Programmierkonzepten und Terminologien haben, dann wäre jede der drei Dokumentationen ein Kinderspiel, um sie durchzulesen.
6. Unterstützung für Erweiterungen und Middleware
Scrapy ist das am besten erweiterbare Web-Scraping-Python-Framework, Punkt. Es unterstützt Middleware, Erweiterungen, Proxys und mehr und hilft Ihnen bei der Entwicklung eines Crawlers für große Projekte.
Sie können narrensichere und effiziente Crawler schreiben, indem Sie Middlewares in Scrapy implementieren, bei denen es sich im Grunde um Hooks handelt, die dem Standardmechanismus des Frameworks benutzerdefinierte Funktionen hinzufügen. Beispielsweise kümmert sich die HttpErrorMiddleware um HTTP-Fehler, damit sich die Spider bei der Verarbeitung von Anfragen nicht darum kümmern müssen.
Middleware und Erweiterungen sind exklusiv für Scrapy, aber Sie können ähnliche Ergebnisse mit Beautiful Soup und Selenium erzielen, indem Sie zusätzliche Python-Bibliotheken verwenden.
7. JavaScript-Rendering
Selenium hat einen Anwendungsfall, in dem es andere Web-Scraping-Bibliotheken übertrifft, nämlich das Scraping von JavaScript-fähigen Websites. Obwohl Sie JavaScript-Elemente mit Scrapy-Middlewares schaben können, ist der Selenium-Workflow der einfachste und bequemste von allen.
Sie verwenden einen Browser, um eine Website zu laden, mit ihr durch Klicken und Drücken von Schaltflächen zu interagieren und wann Wenn Sie den Inhalt haben, den Sie auf den Bildschirm kratzen müssen, extrahieren Sie ihn mit Seleniums CSS und XPath Selektoren.
Beautiful Soup kann HTML-Elemente entweder mit XPath- oder CSS-Selektoren auswählen. Es bietet jedoch keine Funktionalität zum Scrapen von JavaScript-gerenderten Elementen auf einer Webseite.
Web Scraping leicht gemacht mit Python
Das Internet ist voll von Rohdaten. Web Scraping hilft dabei, diese Daten in aussagekräftige Informationen umzuwandeln, die sinnvoll genutzt werden können. Selenium ist höchstwahrscheinlich Ihre sicherste Wahl, wenn Sie eine Website mit JavaScript schaben möchten oder einige Elemente auf dem Bildschirm auslösen müssen, bevor Sie die Daten extrahieren.
Scrapy ist ein vollwertiges Web-Scraping-Framework für alle Ihre Bedürfnisse, egal ob Sie einen kleinen Crawler oder einen großen Scraper schreiben möchten, der das Internet wiederholt nach aktualisierten Daten durchsucht.
Sie können Beautiful Soup verwenden, wenn Sie Anfänger sind oder schnell einen Schaber entwickeln müssen. Welches Framework oder welche Bibliothek Sie auch verwenden, es ist einfach, Web Scraping mit Python zu lernen.