Web Crawling, auch Web Spidering oder Screen Scraping genannt, Software-Entwickler Definieren Sie es als „Schreiben einer Software zum Iterieren über eine Reihe von Webseiten, um Inhalte zu extrahieren“. Es handelt sich aus verschiedenen Gründen um ein großartiges Tool zum Extrahieren von Daten aus dem Web.

Verwendung eines Webseiten-Crawlerkönnen Sie Daten aus einer Reihe von Artikeln crawlen und scrapen, einen großen Blog-Beitrag durchforsten oder quantitative Daten von Amazon scrapen, um die Preisüberwachung und das maschinelle Lernen zu ermöglichen, das Problem zu lösen, Inhalte von Sites abzurufen, die über keine offizielle API verfügen, oder einfach Ihren eigenen Prototyp für das nächste, bessere Web erstellen.

In diesem Tutorial vermitteln wir Ihnen die Grundlagen der Verwendung von Crawlbase und Scrapy zum Crawlen und Scrapen von Webseiten. Als Beispiel verwenden wir Amazon-Suchergebnisseiten, um Produkt-ASIN-URLs und -Titel zu extrahieren. Wenn dieses Tutorial abgeschlossen ist, verfügen Sie hoffentlich über einen voll funktionsfähigen Web Scraper, der eine Reihe von Seiten auf Amazon durchläuft, Daten von jeder Seite extrahiert und auf Ihrem Bildschirm ausgibt.

Das Scraper-Beispiel kann leicht erweitert und als solide Ebene für Ihre persönlichen Projekte zum Crawlen und Scrapen von Daten aus dem Web verwendet werden.

Blog-Ziele:

  • Erfahren Sie mehr über das Scrapy-Framework, seine Funktionen, Architektur und Funktionsweise.
  • Erfahren Sie, wie Sie Ihre eigenen Amazon-Schaber in Python Scrapy mit Crawlbase.
  • Erfahren Sie die Grundlagen zum Extrahieren von Amazon-Produktseiten aus Amazon-Suchergebnisseiten.

Voraussetzungen:

Um dieses Tutorial erfolgreich abzuschließen, benötigen Sie eine Crawlbase API kostenloses Token zum anonymen Scraping von Webseiten und Python 3 auf Ihrem lokalen Computer für die Entwicklung installiert.

Schritt 1 — Erstellen des Amazon Basic Scrapers

Scrapy ist eine Python-Scraping-Bibliothek; sie enthält die meisten gängigen Tools, die uns beim Scraping helfen. Sie beschleunigt den Scraping-Prozess und wird von einer Open-Source-Community gepflegt, die das Scraping und Crawlen des Webs liebt.

Crawlbase verfügt über eine Python-Scraping-Bibliothek. In Kombination mit Scrapy garantieren wir, dass unser Crawler anonym und im großen Maßstab läuft, ohne von Websites blockiert zu werden. Die Crawlbase-API ist eine leistungsstarke dünne Schicht, die als dünne Middleware über jeder Site fungiert.

Crawlbase und Scrapy haben Python-Pakete auf PyPI (bekannt als pip). PyPI, der Python-Paketmanager, wird von der Python-Community als Repository für verschiedene Bibliotheken verwaltet, die Entwickler benötigen.

Installieren Sie Crawlbase und Scrapy mit den folgenden Befehlen:

1
pip installieren crawlbase
1
pip install scrapy

Erstellen Sie einen neuen Ordner für den Scraper:

1
mkdir Amazon-Scraper

Navigieren Sie zum Scraper-Verzeichnis, das Sie oben erstellt haben:

1
CD Amazon-Scraper

Erstellen Sie eine Python-Datei für Ihren Scraper. Der gesamte Code dieses Tutorials wird in dieser Datei abgelegt. Wir verwenden für dieses Tutorial den Touch-Befehl in der Konsole. Sie können jedoch auch jeden anderen Editor Ihrer Wahl verwenden.

1
berühren Sie myspider.py

Lassen Sie uns unsere erste einfache Scrapy Spider erstellen AmazonSpider das erbt von scrapy.Spider. Gemäß der Scrapy-Dokumentation haben Unterklassen zwei erforderliche Attribute. Das name Das ist ein Name für unseren Spider und eine Liste von URLs start_urls, wir werden für dieses Beispiel eine URL verwenden. Wir importieren auch die Crawlbase-API. Damit können wir URLs erstellen, die über die Crawlbase-API statt über die Originalseiten laufen. Dadurch werden Blockaden und Captcha-Seiten vermieden.

Fügen Sie den folgenden Code ein myspider.py

1
2
3
4
5
6
7
8
9
10
11
importieren Schrott

für crawlbase.crawlbase_api importieren CrawlingAPI

# Holen Sie sich das API-Token von Crawlbase und ersetzen Sie es durch YOUR_TOKEN
api = CrawlingAPI({ 'Zeichen': 'IHR_TOKEN' })

Klasse AmazonSpider(scrapy.Spider):
Name = „Amazonspinne“ # Amazon-Suchergebnis-URLs zum Extrahieren von ASIN-Seiten und -Titeln
URLs = [„https://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=cold-brew+coffee+makers&page=1“] # die URLs durch die Crawlbase API laufen lassen
start_urls = Liste(Karte(Lambda URL: api.buildURL({ 'URL': URL }), URLs))

Führen Sie den Scraper aus, der noch keine Daten extrahiert, aber Sie sollten ihn auf den Crawlbase API Endpoint verweisen lassen und erhalten Crawled 200 von Scrapy.

1
Scrapy Runspider Myspider.py

Das Ergebnis sollte ungefähr so ​​aussehen. Beachten Sie, dass die Anforderung an die Amazon-Ergebnisseite über Crawlbase mit dem Antwortcode 200 bestanden wurde.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2018 07:09:02 [scrapy.utils.log] INFO: Scrapy 05 gestartet (Bot: Scrapybot)
2018-07-09 02:05:23 [scrapy.utils.log] INFO: Versionen: lxml 4.2.3.0, libxml2 2.9.8, cssselect 1.0.3, parsel 1.5.0, w3lib 1.19.0, Twisted 18.4.0, Python 2.7.15 (Standard, 1. Mai 2018, 16:44:37) - [GCC 4.2.1 kompatibles Apple LLVM 9.0.0 (clang-900.0.39.2)], pyOpenSSL 18.0.0 (OpenSSL 1.1.0h 27. März 2018), Kryptografie 2.2.2, Plattform Darwin-16.7.0-x86_64-i386-64bit
2018-07-09 02:05:23 [scrapy.crawler] INFO: Überschriebene Einstellungen: {'SPIDER_LOADER_WARN_ONLY': True}
2018-07-09 02:05:23 [scrapy.middleware] INFO: Aktivierte Erweiterungen:
...
2018-07-09 02:05:23 [scrapy.core.engine] INFO: Spider geöffnet
2018-07-09 02:05:23 [scrapy.extensions.logstats] INFO: 0 Seiten gecrawlt (bei 0 Seiten/min), 0 Elemente gescrapt (bei 0 Elementen/min)
2018-07-09 02:05:23 [scrapy.extensions.telnet] DEBUG: Telnet-Konsole lauscht auf 127.0.0.1:6023
2018-07-09 02:05:25 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://api.crawlbase.com/?token=TOKEN_HIDDEN&url=https%3A%2F%2Fwww.amazon.com%2Fs%2Fref%3Dnb_sb_noss%3Furl%3Dsearch-alias%253Daps%26field-keywords%3Dcold-brew%2Bcoffee%2Bmakers%26page%3D1&> (referer: None)
NotImplementedError: AmazonSpider.parse-Rückruf ist nicht definiert
2018 07:09:02 [scrapy.core.engine] INFO: Spider wird geschlossen (fertig)
2018 07:09:02 [scrapy.statscollectors] INFO: Scrapy-Statistiken ausgeben:
{'downloader/request_bytes': 390,
'Downloader/Anforderungsanzahl': 1,
'Downloader/Anzahl_Anforderungsmethoden/GET': 1,
'Downloader/Antwortbytes': 146800,
'Downloader/Antwortanzahl': 1,
...
'Startzeit': datetime.datetime(2018, 7, 8, 23, 5, 23, 681766)}
2018-07-09 02:05:25 [scrapy.core.engine] INFO: Spider geschlossen (fertig)

Da wir den Parser noch nicht geschrieben haben, lud der Code einfach die start_urls Das ist nur eine URL zu Amazon-Suchergebnissen über die Crawlbase-API und hat das Ergebnis an den Standardparser zurückgegeben, der standardmäßig nichts tut. Jetzt ist es an der Zeit, unseren nächsten Schritt zu tun und unseren einfachen Parser zu schreiben, um die benötigten Daten zu extrahieren.

Schritt 2 – Scraping von Amazon ASIN-URLs und -Titeln

Verbessern wir die myspider Klasse mit einem einfachen Parser, der die URLs und Titel aller ASIN-Produkte auf der Suchergebnisseite extrahiert. Dazu müssen wir wissen, welche CSS-Selektoren wir verwenden müssen, um Scrapy anzuweisen, die Daten aus diesen Tags abzurufen. Zum Zeitpunkt des Schreibens dieses Tutorials befinden sich die ASIN-URLs in der .a-link-normal CSS-Selektor

Wenn wir unsere Spider-Klasse mit unserem einfachen Parser erweitern, erhalten wir den folgenden Code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
importieren Schrott

für crawlbase.crawlbase_api importieren CrawlingAPI

# Holen Sie sich das API-Token von Crawlbase und ersetzen Sie es durch YOUR_TOKEN
api = CrawlingAPI({ 'Zeichen': 'IHR_TOKEN' })

Klasse AmazonSpider(scrapy.Spider):
Name = „Amazonspinne“ # Amazon-Suchergebnis-URLs
URLs = [„https://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=cold-brew+coffee+makers&page=1“] # URLs so einrichten, dass sie über die Crawlbase-API laufen
start_urls = Liste(Karte(Lambda URL: api.buildURL({ 'URL': URL }), URLs))

def parsen(selbst, Antwort):
für Link in Antwort.css(„li.s-Ergebnis-Element“):
Ausbeute {
'URL': link.css(„aa-link-normal.a-text-normal ::attr(href)“).extract_first(),
‚Titel‘: link.css('aa-link-normal ::text').extract_first()
}

Wenn wir Scrapy erneut ausführen, sollten wir einige nette URLs von ASIN-Seiten und deren Titeln ausgeben. 😄

1
2
3
4
5
6
...
2018-07-09 04:01:18 [scrapy.core.scraper] DEBUG: Scraped from <200 https://api.crawlbase.com/?token=TOKEN_HIDDEN&url=https%3A%2F%2Fwww.amazon.com%2Fs%2Fref%3Dnb_sb_noss%3Furl%3Dsearch-alias%253Daps%26field-keywords%3Dcold-brew%2Bcoffee%2Bmakers%26page%3D1&>
{'url': 'https://www.amazon.com/Airtight-Coffee-Maker-Infuser-Spout/dp/B01CTIYU60/ref=sr_1_5/135-1769709-1970912?ie=UTF8&qid=1531098077&sr=8-5&keywords=cold-brew+coffee+makers', 'title': 'Luftdichter Cold Brew-Eiskaffeebereiter und Tee-Ei mit Ausgießer – 1.0 l/34 oz ovale RJ3-Brühglaskaraffe mit abnehmbarem Edelstahlfilter'}
2018-07-09 04:01:18 [scrapy.core.scraper] DEBUG: Scraped from <200 https://api.crawlbase.com/?token=TOKEN_HIDDEN&url=https%3A%2F%2Fwww.amazon.com%2Fs%2Fref%3Dnb_sb_noss%3Furl%3Dsearch-alias%253Daps%26field-keywords%3Dcold-brew%2Bcoffee%2Bmakers%26page%3D1&>
{'url': 'https://www.amazon.com/KitchenAid-KCM4212SX-Coffee-Brushed-Stainless/dp/B06XNVZDC7/ref=sr_1_6/135-1769709-1970912?ie=UTF8&qid=1531098077&sr=8-6&keywords=cold-brew+coffee+makers', 'title': 'KitchenAid KCM4212SX Cold Brew-Kaffeemaschine, gebürsteter Edelstahl'}
...

Die Architektur des Python Scrapy Web Scraper Framework

Scrapy Web Scraper gilt als robustes und Open-Source-Web-Crawling-Framework, das sorgfältig in Python erstellt wurde.
Web-Scraper und Entwickler lieben Scrapy gleichermaßen. Es führt sie mit unübertroffener Effizienz durch die Datenextraktion und das Scraping von Websites.

Wenn ein Projekt gestartet wird, kommen mehrere Dateien ins Spiel, die mit den Hauptkomponenten von Scrapy interagieren. Wenn man sich das Scrapy-Framework ansieht, sieht man, dass sein Kern die Engine ist. Die Engine betreibt vier Hauptteile:

  • Spiders
  • Artikel-Pipelines
  • Der Downloader
  • Der Planer

Lassen Sie uns ihre Arbeitsweise in einfache Schritte unterteilen:

  1. In der Anfangsphase des Scrapy-Web-Scrapings wird die Kommunikation durch Spider erleichtert. Diese Spider fungieren als Klassen, die verschiedene Scraping-Methoden definieren. Benutzer rufen diese Methoden auf. Sie ermöglichen es dem Scrapy-Web-Scraper, Anfragen an die Engine zu senden. Die Anfragen umfassen die zu scrapenden URLs und die gewünschten Informationen zur Extraktion. Die Scrapy-Engine ist von entscheidender Bedeutung. Sie steuert den Datenfluss und löst wichtige Ereignisse beim Scraping aus. Sie fungiert als Manager des gesamten Vorgangs.
  2. Sobald die Engine eine Anforderung empfängt, wird sie an den Scheduler weitergeleitet, der die Reihenfolge der auszuführenden Aufgaben verwaltet. Wenn mehrere URLs angegeben werden, stellt der Scheduler sie zur Verarbeitung in die Warteschlange.
  3. Die Engine empfängt außerdem Anfragen vom Scheduler, der die Aufgaben vorab angeordnet hat. Diese Anfragen werden dann an das Downloader-Modul gesendet. Die Aufgabe des Downloaders besteht darin, den HTML-Code der angegebenen Webseite abzurufen und in ein Response-Objekt umzuwandeln.
  4. Danach erhält der Spider das Response-Objekt. Er verwendet es, um bestimmte Scraping-Methoden auszuführen, die in der Spider-Klasse definiert sind. Anschließend werden die verarbeiteten Daten in das ItemPipeline-Modul verschoben. Dort werden sie zahlreichen Transformationsschritten unterzogen. Diese Schritte können Bereinigung, Datenvalidierung oder das Einfügen in eine Datenbank umfassen.

Zusammenfassend lässt sich sagen, dass das Scrapy-Framework aus Schlüsselkomponenten besteht. Es umfasst Spiders, die Scraping-Methoden definieren. Außerdem verfügt es über die Scrapy Engine, die den Datenfluss steuert. Es gibt den Scheduler, der die Aufgabenreihenfolge verwaltet. Und den Downloader, der den Inhalt der Webseite abruft. Schließlich gibt es die ItemPipeline, die Schritte auf extrahierte Daten anwendet. Jede Komponente spielt eine wichtige Rolle bei der Gewährleistung eines effizienten und organisierten Scrapy-Web-Scraping-Prozesses.

Warum Scrapy Ihre erste Wahl sein sollte?

Wenn Sie eine Webseite crawlen müssen, ist Scrapy Web Scraper aus mehreren überzeugenden Gründen die unübertroffene Wahl. Lassen Sie uns die Funktionen von Scrapy besprechen und verstehen, warum es Ihr bevorzugtes Web Scraping-Tool sein sollte.

Vielseitigkeit

Was Scrapy Web Scraper auszeichnet, ist seine angeborene Vielseitigkeit und Flexibilität. Das Framework überwindet mühelos die Hindernisse von Webseiten. Es löst auch die Komplexität der Datenextraktion. Es fungiert als zuverlässiger Begleiter für alle, die sich mit Web Scraping auskennen, und macht den Prozess sowohl zugänglich als auch effizient.

Einfaches Crawlen von Webseiten

Das Scrapy-Framework zeichnet sich durch seine Fähigkeit aus, eine Webseite mit höchster Präzision zu crawlen. Scrapy bietet eine einfache Möglichkeit, eine Webseite zu crawlen. Entwickler können sich damit auf die Extraktion konzentrieren, nicht auf die harte Technik.

Egal, ob Sie die komplizierte Struktur einer Website durchsuchen oder Daten extrahieren, Scrapy bietet ein reibungsloses Erlebnis. Es vereinfacht die komplexe Aufgabe des Durchsuchens von Webseiten und ist somit ein idealer Begleiter sowohl für Anfänger als auch für erfahrene Entwickler.

Python-Vereinfachung

In der Gesellschaft der Programmiersprachen ist Python für seine Einfachheit und Lesbarkeit bekannt. Scrapy, ein auf Python basierendes Framework, erbt diese Eigenschaften. Dies macht es zu einer hervorragenden Wahl für alle, die mit Web Scraping beginnen. Python-Code in Scrapy ist vertraut. Dies erleichtert das Erlernen und bietet eine bessere Umgebung zum Erstellen der Scraping-Logik.

Scrapy bietet so erstaunliche Funktionen, die das Crawlen einer Webseite vereinfachen. Von der Initiierung von Anfragen bis hin zum Parsen und Speichern von Daten rationalisiert Scrapy jeden Schritt mit Finesse. Es bietet ein vollständiges Framework. Es dient zum Erstellen skalierbarer und effizienter Spider. Die Spider sind für verschiedene Scraping-Projekte angepasst.

Anonymität mit Scrapy Proxy-Unterstützung

Die Wahrung der Anonymität beim Web Scraping ist entscheidend und Scrapy zeichnet sich in dieser Hinsicht aus. Mit integrierter Proxy-Unterstützung stellt Scrapy sicher, dass Ihr Crawler inkognito bleibt. Diese Funktion ist von unschätzbarem Wert, wenn es um IP-Sperren oder CAPTCHAs geht, und bietet eine robuste Lösung, um potenzielle Hindernisse während des Scraping-Prozesses zu überwinden. Diese Scrapy-Proxy-Unterstützung verleiht Ihrem Scraping-Prozess eine zusätzliche Ebene der Belastbarkeit.

Leistungsstarke Web Scraping-Funktionen

Scrapy Web Scraper steht für leistungsstarke Web Scraping-Funktionen. Es optimiert den gesamten Prozess, vom Senden von Anfragen bis zum Parsen und Speichern von Daten. Seine Effizienz und Zuverlässigkeit machen es unverzichtbar. Es extrahiert Daten von verschiedenen Websites und bietet eine gute Leistung. Es spielt keine Rolle, ob Sie ein Anfänger sind oder über 10 Jahre Erfahrung auf diesem Gebiet verfügen, Scrapy Proxy gibt Ihnen die Tools an die Hand, die Sie benötigen, um die riesigen Mengen an Webdaten mit Leichtigkeit zu navigieren. Seine Architektur ist komponentenbasiert. Es fördert die Anpassung und ermöglicht Entwicklern die Erstellung von Scraping-Workflows, um die Projektanforderungen zu erfüllen.

Erleben Sie Scraping der nächsten Ebene mit Crawlbase

In diesem Tutorial haben wir die Grundlagen des Web-Crawlings und -Scrapens gelernt. Wir haben die Crawlbase-API mit Scrapy verwendet, um unseren Scraper vor Websites zu verbergen, die unsere Anfragen blockieren könnten. Wir haben auch die Grundlagen zum Extrahieren von Amazon-Produktseiten aus Amazon-Suchergebnisseiten gelernt. Sie können das Beispiel auf jede gewünschte Website ändern und mit Scrapy & Crawlbase mit dem anonymen Crawlen von Tausenden von Seiten beginnen.

Wir hoffen, dass Ihnen dieses Tutorial gefallen hat und hoffen, Sie bald in Crawlbase. Viel Spaß beim Krabbeln und Kratzen!