Heim > Backend-Entwicklung > Python-Tutorial > Eine kurze Einführung in das Python-Crawler-Framework Scrapy

Eine kurze Einführung in das Python-Crawler-Framework Scrapy

不言
Freigeben: 2018-10-19 17:04:04
nach vorne
2667 Leute haben es durchsucht

Dieser Artikel bietet Ihnen eine kurze Einführung in das Python-Crawler-Framework Scrapy. Ich hoffe, dass es für Freunde hilfreich ist.

Scrapy-Framework

Scrapy ist ein in reinem Python geschriebenes Anwendungsframework zum Crawlen von Website-Daten und zum Extrahieren von Strukturdaten. Es hat ein breites Anwendungsspektrum.

Mit der Leistungsfähigkeit des Frameworks müssen Benutzer nur ein paar Module anpassen und entwickeln, um ganz einfach einen Crawler zum Crawlen von Webinhalten und verschiedenen Bildern zu implementieren, was sehr praktisch ist.

Scrapy verwendet das asynchrone Netzwerk-Framework Twisted'twɪstɪd zur Abwicklung der Netzwerkkommunikation, das unsere Downloads beschleunigen kann, ohne das asynchrone Framework selbst implementieren zu müssen. Es enthält außerdem verschiedene Middleware-Schnittstellen und kann verschiedene Anforderungen flexibel erfüllen.

Scrapy-Architekturdiagramm (die grüne Linie ist die Datenflussrichtung):

95625f65089e4bc98a269cfda6701597.png

Scrapy Engine: Verantwortlich für die Kommunikation zwischen Spider, ItemPipeline, Downloader und Scheduler . Signale, Datenübertragung usw.

Scheduler (Scheduler): Er ist dafür verantwortlich, von der Engine gesendete Anforderungsanfragen zu akzeptieren, sie auf eine bestimmte Weise zu sortieren, in die Warteschlange zu stellen und sie an die Engine zurückzugeben, wenn die Engine sie benötigt.

Downloader: Verantwortlich für das Herunterladen aller von Scrapy Engine gesendeten Anfragen und die Rücksendung der erhaltenen Antworten an Scrapy Engine, die zur Verarbeitung an Spider übergeben werden.

Spider (Crawler): Er ist verantwortlich für Verarbeiten aller Antworten, Analysieren und Extrahieren von Daten daraus, Abrufen der für das Elementfeld erforderlichen Daten, Übermitteln der URL, der gefolgt werden muss, an die Engine und erneutes Aufrufen des Schedulers (Scheduler),

Item Pipeline (Pipeline): Sie ist für die Verarbeitung der vom Spider erhaltenen Elemente und die Durchführung der Nachbearbeitung (detaillierte Analyse, Filterung, Speicherung usw.) verantwortlich.

Downloader-Middleware (Middleware herunterladen): Sie können es sein gilt als Komponente, die zur Erweiterung der Download-Funktion angepasst werden kann.

Spider-Middleware (Spider-Middleware): Sie können es als funktionale Komponente verstehen, die die Erweiterung anpassen und die mittlere Kommunikation zwischen der Engine und Spider betreiben kann (z. B. Antworten, die in Spider eingehen, und Anfragen, die von Spider ausgehen).

b847d7fa404a404ca0a656028ada63b5.png

Wenn Sie beim Erlernen von Python auf viele Fragen und Probleme stoßen, können Sie -q-u-n 227 -435-450 hinzufügen. Es gibt kostenlose Software-Videomaterialien

Scrapy Der Betriebsprozess

Der Code wird geschrieben und das Programm beginnt zu laufen...

Engine: Hallo! Spider, an welcher Website arbeitest du?

Spider: Der Chef möchte, dass ich mich um xxxx.com kümmere.

Engine: Geben Sie mir die erste URL, die verarbeitet werden muss.

Spider: Bitte schön, die erste URL ist xxxxxxx.com.

Motor: Hallo! Planer, ich möchte Sie bitten, mir beim Sortieren der Warteschlangen zu helfen.

Planer: OK, Bearbeitung. Bitte warten.

Motor: Hallo! Planer, geben Sie mir die Anfrage, die Sie bearbeitet haben.

Scheduler: Bitte schön, das ist die Anfrage, die ich bearbeitet habe

Engine: Hallo! Downloader, bitte helfen Sie mir, diese Anfrage gemäß den Download-Middleware-Einstellungen des Chefs herunterzuladen

Downloader: OK! Bitte schön, hier ist der Download. (Wenn es fehlschlägt: Entschuldigung, der Download dieser Anfrage ist fehlgeschlagen. Dann teilt die Engine dem Planer mit, dass der Download dieser Anfrage fehlgeschlagen ist. Sie zeichnen es auf und wir werden es später herunterladen)

Engine: Hallo! Spider, das ist etwas, das heruntergeladen und gemäß der Download-Middleware des Chefs verarbeitet wurde. Sie können es selbst erledigen (Hinweis! Die Antworten hier werden standardmäßig von der Funktion def parse() verarbeitet)

Spider : (für die URL, die nach der Datenverarbeitung weiterverfolgt werden muss), Hallo! Engine, ich habe hier zwei Ergebnisse, dies ist die URL, die ich verfolgen muss, und dies sind die Artikeldaten, die ich erhalten habe.

Motor: Hallo! Pipeline Ich habe hier einen Artikel. Bitte helfen Sie mir, damit umzugehen! Planer! Dies ist eine URL, die weiterverfolgt werden muss. Bitte helfen Sie mir, damit umzugehen. Beginnen Sie dann die Schleife ab Schritt 4, bis Sie alle Informationen erhalten haben, die der Chef benötigt.

Pipeline `` Scheduler: OK, mach es jetzt!

Achtung! Nur wenn im Scheduler keine Anfragen vorhanden sind, stoppt das gesamte Programm (d. h. Scrapy lädt die URL erneut herunter, deren Download fehlgeschlagen ist).

Es sind insgesamt 4 Schritte erforderlich, um einen Scrapy-Crawler zu erstellen :

Neues Projekt (scrapy startproject xxx): Erstellen Sie ein neues Crawler-Projekt

Löschen Sie das Ziel (schreiben Sie items.py): Löschen Sie das Ziel, das Sie crawlen möchten

Erstellen ein Crawler (spiders/xxspider.py): Erstellen Sie einen Crawler, um mit dem Crawlen von Webseiten zu beginnen

Speicherinhalt (pipelines.py): Entwerfen Sie Pipelines zum Speichern gecrawlter Inhalte

Das obige ist der detaillierte Inhalt vonEine kurze Einführung in das Python-Crawler-Framework Scrapy. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage