Unterschied zwischen BeautifulSoup und Scrapy Crawler?

134

Ich möchte eine Website erstellen, die den Vergleich zwischen dem Produktpreis von Amazon und E-Bay zeigt. Welche davon funktioniert besser und warum? Ich bin ein bisschen vertraut mit BeautifulSoup, aber nicht so sehr mit Scrapy Crawler .

Nishant Bhakta
quelle
6
Warum sollten Sie Crawler verwenden, wenn beide Websites über eine hervorragende API verfügen? aws.amazon.com/python developer.ebay.com/common/api
Inbar Rose
5
Ich komme aus Indien und ich denke, Amazon-Api unterstützt Indien Host nicht. Es gibt keine API (Gebietsschema) für Indien. HOSTS = {'ca': 'ecs.amazonaws.ca', 'cn': 'webservices.amazon.cn', 'de': 'ecs.amazonaws.de', 'es': 'webservices.amazon.es' , 'fr': 'ecs.amazonaws.fr', 'it': 'webservices.amazon.it', 'jp': 'ecs.amazonaws.jp', 'uk': 'ecs.amazonaws.co.uk' , 'us': 'ecs.amazonaws.com',}
Nishant Bhakta
11
Und was ist, wenn ich eine andere Site ohne API crawlen möchte?
Nishant Bhakta
@InbarRose Für die Verwendung der Produkt-API von Amazon ist ein Amazon Associate-Konto erforderlich.
Zachary Ryan Smith

Antworten:

231

Scrapy ist ein Web-Spider- oder Web-Scraper-Framework . Sie geben Scrapy eine Root-URL, um mit dem Crawlen zu beginnen. Anschließend können Sie Einschränkungen für die Anzahl (Anzahl) der URLs festlegen, die Sie crawlen und abrufen möchten. Es ist ein vollständiges Framework für das Web-Scraping oder Crawlen .

Während

BeautifulSoup ist eine Analysebibliothek, die auch sehr gut Inhalte von URLs abruft und es Ihnen ermöglicht, bestimmte Teile davon problemlos zu analysieren. Es ruft nur den Inhalt der von Ihnen angegebenen URL ab und stoppt dann. Es wird nicht gecrawlt, es sei denn, Sie fügen es manuell in eine Endlosschleife mit bestimmten Kriterien ein.

Mit einfachen Worten, mit Beautiful Soup können Sie etwas Ähnliches wie Scrapy bauen. Beautiful Soup ist eine Bibliothek, während Scrapy ein komplettes Framework ist .

Quelle

Medeiros
quelle
1
Was ist schneller, ich meine, ich benutze BeautifulSoup und es dauert ungefähr 10 Sekunden, um Daten zu verschrotten? Kratzt schneller als schöne Suppe?
Shuboy2014
Wenn Sie Beautifulsoup mit Blockierungscode verwenden, sollte Scrapy schneller sein, solange unabhängige Anforderungen gestellt werden müssen. Ich denke, Sie können Beautifulsoup auch mit Asyncio verwenden, um eine bessere Leistung zu erzielen.
Färberay
Ich würde sagen, Scrapy zusammen mit BeautifulSoup wird super schnell sein und Sie könnten das Beste aus beiden herausholen.
Rahul
18

Ich denke, beide sind gut ... ich mache gerade ein Projekt, das beide verwendet. Zuerst verschrotte ich alle Seiten mit Scrapy und speichere sie mit ihren Pipelines in einer Mongodb-Sammlung. Außerdem lade ich die Bilder herunter, die auf der Seite vorhanden sind. Danach benutze ich BeautifulSoup4, um eine Pos-Verarbeitung durchzuführen, bei der ich Attributwerte ändern und einige spezielle Tags erhalten muss.

Wenn Sie nicht wissen, welche Seitenprodukte Sie möchten, ist ein gutes Tool schwierig, da Sie mit ihren Crawlern alle Amazon / eBay-Websites ausführen können, die nach den Produkten suchen, ohne eine explizite for-Schleife zu erstellen.

Schauen Sie sich die Scrapy-Dokumentation an, sie ist sehr einfach zu bedienen.

Rdenadai
quelle
Kann ich Scrapy also auf einem Webserver verwenden, da es viele Abhängigkeiten davon gibt (Twisted, pywin32, pyOpenSSL ete ..). (Entschuldigung für diese dumme Frage, ich bin neu in Python)
Nishant Bhakta
Auf dem Webserver? Ich versuche das nie ... ich benutze es auf der Shell, führe den "Scrapy Crawl <Name des Crawlers>" aus, um die Spinne auszuführen ... vielleicht könnten Sie dies auf dem Server verwenden, aber Sie müssen dies mit der Python aufrufen Unterprozessmodul ( docs.python.org/2/library/subprocess.html ). Wie gesagt, versuchen Sie es niemals, aber vielleicht könnte es funktionieren ... nur ein Hinweis: Verwenden Sie die Protokollnachricht von Scrapy, damit Sie wissen, wo auf Ihrem Crawler Fehler auftreten können (aus dem Scrapy-Importprotokoll).
Rdenadai
4

Beide verwenden zum Parsen von Daten.

Scrapy :

  • Scrapy ist ein schnelles Framework für das Crawlen und Web-Scraping auf hoher Ebene, mit dem Websites gecrawlt und strukturierte Daten von ihren Seiten extrahiert werden.
  • Es gibt jedoch einige Einschränkungen, wenn Daten aus Java-Skripten stammen oder dynamisch geladen werden. Wir können sie mithilfe von Paketen wie Splash, Selen usw. überwinden.

BeautifulSoup :

  • Beautiful Soup ist eine Python-Bibliothek zum Abrufen von Daten aus HTML- und XML-Dateien.

  • Wir können dieses Paket verwenden, um Daten aus Java-Skripten abzurufen oder Seiten dynamisch zu laden.

Scrapy mit BeautifulSoup ist eine der besten Kombinationen, mit denen wir statische und dynamische Inhalte abkratzen können

Arun Augustine
quelle
2

Die Art und Weise, wie ich das mache, besteht darin, die eBay / Amazon-APIs anstelle von Scrapy zu verwenden und dann die Ergebnisse mit BeautifulSoup zu analysieren.

Die APIs bieten Ihnen eine offizielle Möglichkeit, die gleichen Daten abzurufen, die Sie von Scrapy Crawler erhalten hätten, ohne sich darum kümmern zu müssen, Ihre Identität zu verbergen, mit Proxys herumzuspielen usw.

baldnbad
quelle
8
Die Frage fragt eindeutig nach Lösungen, bei denen APIs nicht verfügbar sind.
Rohanil
2

Scrapy Es handelt sich um ein Web-Scraping-Framework, das Tonnen von Extras enthält, die das Scraping vereinfachen, sodass wir uns nur auf das Crawlen von Logik konzentrieren können. Einige meiner Lieblingssachen, die Scrapy für uns erledigt, sind unten aufgeführt.

  • Feed-Exporte : Grundsätzlich können wir Daten in verschiedenen Formaten wie CSV, JSON, jsonlines und XML speichern.
  • Asynchrones Scraping: Scrapy verwendet ein verdrehtes Framework, mit dem wir mehrere URLs gleichzeitig aufrufen können, wobei jede Anforderung nicht blockierend verarbeitet wird (Grundsätzlich müssen wir nicht warten, bis eine Anforderung abgeschlossen ist, bevor wir eine weitere Anforderung senden).
  • Selektoren : Hier können wir Scrapy mit wunderschöner Suppe vergleichen. Selektoren ermöglichen es uns, bestimmte Daten von der Webseite auszuwählen, wie z. B. Überschriften, bestimmte Divs mit einem Klassennamen usw.). Scrapy verwendet lxml zum Parsen, was extrem schnell ist als schöne Suppe.
  • Festlegen von Proxy, Benutzeragent, Headern usw .: Mit Scrapy können wir Proxy und andere Header dynamisch festlegen und drehen.

  • Item Pipelines : Mit Pipelines können wir Daten nach der Extraktion verarbeiten. Zum Beispiel können wir die Pipeline so konfigurieren, dass Daten auf Ihren MySQL-Server übertragen werden.

  • Cookies: Scrapy verarbeitet Cookies automatisch für uns.

etc.

TLDR: Scrapy ist ein Framework, das alles bietet, was zum Erstellen umfangreicher Crawls erforderlich ist. Es bietet verschiedene Funktionen, die die Komplexität des Crawls der Websites verbergen. Man kann einfach anfangen, Webcrawler zu schreiben, ohne sich um die Einrichtungslast kümmern zu müssen.

Schöne Suppe Schöne Suppe ist ein Python-Paket zum Parsen von HTML- und XML-Dokumenten . Mit Beautiful Suppe können Sie also eine Webseite analysieren, die bereits heruntergeladen wurde. BS4 ist sehr beliebt und alt. Im Gegensatz zu Scrapy können Sie schöne Suppen nicht nur zur Herstellung von Crawlern verwenden . Sie benötigen andere Bibliotheken wie Anfragen, Urllib usw., um Crawler mit bs4 zu erstellen. Dies bedeutet wiederum, dass Sie die Liste der gecrawlten URLs verwalten, gecrawlt, Cookies verarbeiten, Proxys verwalten, Fehler behandeln, eigene Funktionen erstellen müssen, um Daten an CSV, JSON, XML usw. zu senden. Wenn Sie beschleunigen möchten dann müssen Sie andere Bibliotheken wie Multiprocessing verwenden .

Um zusammenzufassen.

  • Scrapy ist ein umfangreiches Framework, mit dem Sie Crawler ohne Probleme schreiben können.

  • Schöne Suppe ist eine Bibliothek, mit der Sie eine Webseite analysieren können. Es kann nicht alleine zum Abkratzen von Web verwendet werden.

Sie sollten Scrapy auf jeden Fall für Ihre Amazon- und E-Bay-Produktpreisvergleichswebsite verwenden. Sie können eine Datenbank mit URLs erstellen und den Crawler jeden Tag ausführen (Cron-Jobs, Sellerie zum Planen von Crawls) und den Preis für Ihre Datenbank aktualisieren. Auf diese Weise wird Ihre Website immer aus der Datenbank abgerufen, und Crawler und Datenbank fungieren als einzelne Komponenten.

Amit
quelle
1

BeautifulSoup ist eine Bibliothek, mit der Sie Informationen von einer Webseite extrahieren können.

Scrapy hingegen ist ein Framework, das die oben genannten und viele weitere Aufgaben ausführt , die Sie wahrscheinlich in Ihrem Scraping-Projekt benötigen, z. B. Pipelines zum Speichern von Daten.

Sie können diesen Blog überprüfen, um mit Scrapy zu beginnen. Https://www.inkoop.io/blog/web-scraping-using-python-and-scrapy/

Jaskaran Singh
quelle
0

Mit Scrapy können Sie Tonnen von Code speichern und mit der strukturierten Programmierung beginnen. Wenn Ihnen eine der vorab geschriebenen Methoden der Scapy nicht gefällt, kann BeautifulSoup anstelle der Scrapy-Methode verwendet werden. Ein großes Projekt nutzt beide Vorteile.

Ethirajit
quelle
0

Die Unterschiede sind vielfältig und die Auswahl eines Werkzeugs / einer Technologie hängt von den individuellen Bedürfnissen ab.

Einige wesentliche Unterschiede sind:

  1. BeautifulSoup ist vergleichsweise leicht zu erlernen als Scrapy.
  2. Die Erweiterungen, der Support und die Community sind für Scrapy größer als für BeautifulSoup.
  3. Scrapy sollte als Spinne betrachtet werden, während BeautifulSoup ein Parser ist .
krish___na
quelle