Heim >Backend-Entwicklung >Python-Tutorial >Python-Crawling-Framework Scrapy-Architektur

Python-Crawling-Framework Scrapy-Architektur

高洛峰
高洛峰Original
2017-02-25 13:32:531277Durchsuche

Ich habe kürzlich Python gelernt und lerne auch, wie man Python zum Crawlen von Daten verwendet. Deshalb habe ich das sehr beliebte Python-Crawling-Framework Scrapy entdeckt. Lernen Sie die Architektur von Scrapy kennen, um dieses Tool besser nutzen zu können.

1. Übersicht

Die folgende Abbildung zeigt die allgemeine Architektur von Scrapy, die seine Hauptkomponenten und den Datenverarbeitungsprozess des Systems umfasst (grün). Der Pfeil zeigt „Anzeigen“ an). Lassen Sie uns nacheinander die Rolle jeder Komponente und den Datenverarbeitungsprozess erklären.

Python抓取框架 Scrapy的架构

2. Komponenten

1. Scrapy Engine

Die Scrapy-Engine wird verwendet, um den Datenverarbeitungsprozess des gesamten Systems zu steuern und die Transaktionsverarbeitung auszulösen. Nähere Einzelheiten entnehmen Sie bitte dem Datenverarbeitungsprozess weiter unten.

2. Scheduler (Planung)

Der Scheduler nimmt Anfragen von der Scrapy-Engine entgegen und sortiert sie in die Warteschlange und nach der Scrapy-Engine gibt die Anfrage aus. Schicken Sie es ihnen zurück.

3. Downloader

Die Hauptaufgabe des Downloaders besteht darin, Webseiten zu crawlen und Webinhalte an Spiders (Spider) zurückzugeben.

4. Spiders

Spider werden von Scrapy-Benutzern selbst definiert, um Webseiten zu analysieren und den von der angegebenen URL zurückgegebenen Inhalt zu crawlen. Jeder Spider kann einen Domänennamen oder eine Gruppe von Domänennamen verarbeiten. Mit anderen Worten: Es wird verwendet, um die Crawling- und Parsing-Regeln für eine bestimmte Website zu definieren.

Der gesamte Crawling-Prozess (Zyklus) des Spiders ist wie folgt:

1). Rufen Sie zuerst die erste Anfrage der ersten URL ab und rufen Sie eine Rückruffunktion auf, wenn die Anfrage zurückkommt. Die erste Anfrage erfolgt durch Aufruf der Methode start_requests(). Diese Methode generiert standardmäßig Anfragen von der URL in start_urls und führt eine Analyse durch, um die Rückruffunktion aufzurufen.
2).In der Rückruffunktion können Sie die Webseitenantwort analysieren und eine Iteration des Elementobjekts, des Anforderungsobjekts oder beider zurückgeben. Diese Anfragen enthalten auch einen Rückruf, werden dann von Scrapy heruntergeladen und dann mit dem angegebenen Rückruf bearbeitet.
3). In der Callback-Funktion analysieren Sie den Inhalt der Website mithilfe des Xpath-Selektors (Sie können aber auch BeautifuSoup, lxml oder ein anderes Programm Ihrer Wahl verwenden) und generieren analysierte Datenelemente.
4). Schließlich gelangen Projekte, die von Spiders zurückgegeben werden, normalerweise in die Projektpipeline.

5. Item-Pipeline

Die Hauptaufgabe der Projektpipeline besteht darin, die von Spiders aus der Webseite extrahierten Elemente zu verarbeiten Seine Hauptaufgabe besteht darin, Daten zu klären, zu überprüfen und zu speichern. Wenn die Seite vom Spider analysiert wird, wird sie an die Projektpipeline gesendet und die Daten werden in mehreren spezifischen Sequenzen verarbeitet. Die Komponenten jeder Projektpipeline sind Python-Klassen mit einer einfachen Methode. Sie erwerben das Projekt und führen ihren Ansatz aus, müssen aber auch entscheiden, ob sie mit dem nächsten Schritt in der Projektpipeline fortfahren oder ihn ohne Bearbeitung verwerfen müssen.

Die von der Projektpipeline normalerweise durchgeführten Prozesse sind:

1). 3 ). Überprüfen Sie, ob es sich um doppelte Daten handelt (löschen Sie sie, wenn sie dupliziert sind)
4). >


Download-Middleware ist ein Hook-Framework zwischen der Scrapy-Engine und dem Downloader. Sie verarbeitet hauptsächlich Anfragen und Antworten zwischen der Scrapy-Engine und dem Downloader. Es bietet eine Möglichkeit mit benutzerdefiniertem Code, die Funktionalität von Scrapy zu erweitern. Der Download-Broker ist ein Hook-Framework, das Anfragen und Antworten verarbeitet. Es handelt sich um ein leichtes Low-Level-System, das die globale Kontrolle über Scrapy genießt.

7. Spider-Middleware (Spider-Middleware)

Spider-Middleware ist hauptsächlich ein Hook-Framework zwischen der Scrapy-Engine und Spidern Verarbeiten Sie die Antworteingabe und die Anforderungsausgabe der Spinne. Es bietet eine Möglichkeit, die Funktionalität von Scrapy mit benutzerdefiniertem Code zu erweitern. Spider-Middleware ist ein Framework, das sich in den Spider-Verarbeitungsmechanismus von Scrapy einfügt. Sie können benutzerdefinierten Code einfügen, um an Spiders gesendete Anfragen zu verarbeiten und von Spiders erhaltene Antwortinhalte und Elemente zurückzugeben.

8. Scheduler-Middleware (Scheduling-Middleware)

Scheduling-Middleware ist die Middleware zwischen der Scrapy-Engine und der Planung. Die Arbeit wird hauptsächlich durch Senden erledigt Anfragen und Antworten von der Scrapy-Engine an den Scheduler. Er stellt einen benutzerdefinierten Code zur Erweiterung der Funktionalität von Scrapy bereit.

3. Datenverarbeitungsprozess Der gesamte Datenverarbeitungsprozess von Scrapy wird von der Scrapy-Engine gesteuert und seine Hauptbetriebsmethode ist:

Die Engine öffnet einen Domänennamen, und der Spider verarbeitet den Domänennamen und ermöglicht dem Spider, die erste gecrawlte URL abzurufen.
Die Engine erhält die erste URL, die gecrawlt werden muss, vom Spider und plant sie dann als Anfrage im Scheduler.
Die Engine erhält die nächste zu crawlende Seite vom Planer.
Der Planer gibt die nächste gecrawlte URL an die Engine zurück und die Engine sendet sie über die Download-Middleware an den Downloader.
Wenn die Webseite vom Downloader heruntergeladen wird, wird der Antwortinhalt über die Download-Middleware an die Engine gesendet.
Die Engine empfängt die Antwort vom Downloader und sendet sie über die Spider-Middleware zur Verarbeitung an den Spider.
Der Spider verarbeitet die Antwort, gibt die gecrawlten Elemente zurück und sendet dann eine neue Anfrage an die Engine.
Die Engine erfasst die Projektpipeline und sendet eine Anfrage an den Planer.
Das System wiederholt die Vorgänge nach dem zweiten Schritt, bis im Zeitplan keine Anfragen mehr vorhanden sind, und trennt dann die Engine von der Domäne.

4. Treiber

Scrapy ist ein beliebtes ereignisgesteuertes Python-Netzwerk-Framework, das von Twisted geschrieben wurde. Es verwendet nicht blockierende asynchrone Verarbeitung.

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er zum Lernen aller beiträgt. Ich hoffe auch, dass jeder die PHP-Chinesisch-Website abonniert.

Weitere Artikel zur Architektur von Scrapy, dem Python-Crawling-Framework, finden Sie auf der chinesischen PHP-Website!

Stellungnahme:
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