Beautiful Soup vs. Scrapy vs. Selenium: Welches Web-Scraping-Tool sollten Sie verwenden?

Beautiful Soup vs. Scrapy vs. Selenium: Welches Web-Scraping-Tool sollten Sie verwenden?
Leser wie Sie helfen, MUO zu unterstützen. Wenn Sie über Links auf unserer Website einen Kauf tätigen, erhalten wir möglicherweise eine Affiliate-Provision. Weiterlesen.

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 alle diese Python-Bibliotheken und -Frameworks für sich genommen leistungsfähig sind, erfüllen sie nicht alle Web-Scraping-Anforderungen, und daher ist es wichtig zu wissen, welches Tool Sie für einen bestimmten Job verwenden sollten.





MAKEUSEOF VIDEO DES TAGES

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 ist besonders hilfreich für Leute, die nur minimale Erfahrung mit Python haben, aber mit Web Scraping durchstarten möchten.





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 problemlos beherrschen, aber für Anfänger kann das Erstellen des ersten Projekts viel Zeit in Anspruch nehmen, wenn sie sich für diese Frameworks anstelle von Beautiful Soup entscheiden.

coole sachen, die man mit einem alten computer machen kann

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 = requests.get(url).text
soup = BeautifulSoup(res, 'html.parser')
title = soup.find("title").text
print(title)

Um ähnliche Ergebnisse mit Selen zu erzielen, würden Sie schreiben:

url = "https://example.com"
driver = webdriver.Chrome("path/to/chromedriver")
driver.get(url)
title = driver.find_element(By.TAG_NAME, "title").get_attribute('text')
print(title)

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:





import scrapy

class TitleSpider(scrapy.Spider):
name = 'title'
start_urls = ['https://example.com']

def parse(self, response):
yield {
'name': response.css('title'),
}

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 schreiend 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

  detaillierte kratzige Dokumentation

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.

So führen Sie Windows-Programme auf Macs aus

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

  Javascript-Code, der in einem Code-Editor geschrieben wurde

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, interagieren mit ihr mit Klicks und Tastendrücken, und wenn Sie den Inhalt haben, den Sie auf den Bildschirm kratzen müssen, extrahieren Sie ihn mit den CSS- und XPath-Selektoren von Selenium.

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.​​​​​​