Heim >Backend-Entwicklung >Python-Tutorial >So erstellen Sie mit Scrapy ein effizientes Crawler-Programm
So erstellen Sie mit Scrapy ein effizientes Crawler-Programm
Mit dem Aufkommen des Informationszeitalters nimmt die Datenmenge im Internet weiter zu und auch die Nachfrage nach großen Datenmengen steigt. Und Crawler sind zu einer der besten Lösungen für dieses Bedürfnis geworden. Als hervorragendes Python-Crawler-Framework ist Scrapy effizient, stabil und einfach zu verwenden und wird in verschiedenen Bereichen häufig eingesetzt. In diesem Artikel wird erläutert, wie Sie mit Scrapy ein effizientes Crawler-Programm erstellen und Codebeispiele angeben.
Das Crawler-Programm von Scrapy besteht hauptsächlich aus den folgenden Komponenten:
In Scrapy müssen wir ein neues Crawler-Projekt erstellen, um unser Crawler-Programm zu schreiben. Führen Sie den folgenden Befehl in der Befehlszeile aus:
scrapy startproject myspider
Dadurch wird ein Projektordner mit dem Namen „myspider“ mit einigen Standarddateien und -ordnern erstellt. Wir können in diesen Ordner gehen und einen neuen Crawler erstellen:
cd myspider scrapy genspider example example.com
Dadurch wird ein Crawler mit dem Namen „example“ erstellt, um Daten von der Website „example.com“ zu crawlen. Wir können spezifische Crawler-Logik in die generierte Datei „example_spider.py“ schreiben.
Nachfolgend finden Sie ein einfaches Beispiel für das Scrapen von Schlagzeilen und Links auf einer Website.
import scrapy class ExampleSpider(scrapy.Spider): name = 'example' allowed_domains = ['example.com'] start_urls = ['http://www.example.com/news'] def parse(self, response): for news in response.xpath('//div[@class="news-item"]'): yield { 'title': news.xpath('.//h2/text()').get(), 'link': news.xpath('.//a/@href').get(), } next_page = response.xpath('//a[@class="next-page"]/@href').get() if next_page: yield response.follow(next_page, self.parse)
Im obigen Code definieren wir eine Crawler-Klasse mit dem Namen „ExampleSpider“, die drei Attribute enthält: „name“ stellt den Namen des Crawlers dar, „allowed_domains“ stellt den Domänennamen dar, der die Website crawlen darf, und „start_urls“ stellt die Start-URL dar . Anschließend haben wir die Parse-Methode neu geschrieben, die den Inhalt der Webseite analysiert, Nachrichtentitel und Links extrahiert und die Ergebnisse mithilfe von yield zurückgibt.
In Scrapy können wir die gecrawlten Daten durch die Projektpipeline leiten. Daten können in einer Datenbank gespeichert, in eine Datei geschrieben oder später auf andere Weise verarbeitet werden.
Öffnen Sie die Datei „settings.py“ im Projektordner, suchen Sie darin das Konfigurationselement ITEM_PIPELINES und kommentieren Sie es aus. Fügen Sie dann den folgenden Code hinzu:
ITEM_PIPELINES = { 'myspider.pipelines.MyPipeline': 300, }
Dadurch wird die benutzerdefinierte Pipeline-Klasse „my Spider.pipelines.MyPipeline“ aktiviert und eine Priorität angegeben (je niedriger die Zahl, desto höher die Priorität).
Als nächstes müssen wir eine Pipeline-Klasse erstellen, um die Daten zu verarbeiten. Erstellen Sie eine Datei namens „pipelines.py“ im Projektordner und fügen Sie den folgenden Code hinzu:
import json class MyPipeline: def open_spider(self, spider): self.file = open('news.json', 'w') def close_spider(self, spider): self.file.close() def process_item(self, item, spider): line = json.dumps(dict(item)) + " " self.file.write(line) return item
In diesem Beispiel definieren wir eine Pipeline-Klasse namens „MyPipeline“ mit drei Methoden: open_spider, close_spider und process_item. In der Methode open_spider öffnen wir eine Datei zum Speichern der Daten. In der Methode close_spider schließen wir die Datei. In der Methode „process_item“ konvertieren wir die Daten in das JSON-Format und schreiben sie in die Datei.
Nachdem wir mit dem Schreiben des Crawler-Programms und der Projektpipeline fertig sind, können wir den folgenden Befehl in der Befehlszeile ausführen, um das Crawler-Programm auszuführen:
scrapy crawl example
Dadurch wird der Crawler mit dem Namen „example“ gestartet und gestartet Crawling Daten abrufen. Die gecrawlten Daten werden so verarbeitet, wie wir sie in der Pipeline-Klasse definiert haben.
Das Obige ist der grundlegende Prozess und Beispielcode für die Verwendung von Scrapy zum Erstellen eines effizienten Crawler-Programms. Natürlich bietet Scrapy auch viele weitere Features und Optionen, die je nach Bedarf angepasst und erweitert werden können. Ich hoffe, dass dieser Artikel den Lesern helfen kann, Scrapy besser zu verstehen und zu verwenden und effiziente Crawler-Programme zu erstellen.
Das obige ist der detaillierte Inhalt vonSo erstellen Sie mit Scrapy ein effizientes Crawler-Programm. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!