Mit der kontinuierlichen Weiterentwicklung der Internet-Technologie ist auch die Crawler-Technologie weit verbreitet. Die Crawler-Technologie kann Daten im Internet automatisch crawlen und in einer Datenbank speichern, was die Datenanalyse und das Data Mining erleichtert. Als sehr bekanntes Crawler-Framework in Python verfügt Scrapy über einige gängige Crawler-Vorlagen, mit denen Daten auf der Zielwebsite schnell gecrawlt und automatisch in einer lokalen oder Cloud-Datenbank gespeichert werden können. In diesem Artikel wird erläutert, wie Sie Scrapys eigene Crawler-Vorlage zum Crawlen von Daten verwenden und wie Sie Daten während des Crawling-Vorgangs bereinigen, analysieren und speichern.
1. Einführung in Scrapy-Crawler-Vorlagen
Scrapy enthält einige Crawler-Vorlagen, darunter grundlegende Spider-Vorlagen, CrawlSpider-Vorlagen und XmlFeedSpider-Vorlagen. Die Spider-Vorlage ist die einfachste Crawler-Vorlage. Ihr Vorteil besteht darin, dass sie ein breites Anwendungsspektrum bietet und einfach zu verwenden ist. Die CrawlSpider-Vorlage ist eine regelbasierte Crawler-Vorlage, die mehrstufige Links schnell crawlen kann und benutzerdefinierte Regeln unterstützt. Die XmlFeedSpider-Vorlage ist eine Crawler-Vorlage, die für das XML-Format geeignet ist. Die Verwendung dieser Vorlagen für das Daten-Crawling kann die Entwicklungsschwierigkeiten für Programmierer erheblich reduzieren und die Crawling-Effizienz verbessern.
2. Scrapy-Crawler-Vorlagenanwendung
Das Folgende ist ein praktisches Beispiel, um zu veranschaulichen, wie man Scrapys eigene Spider-Vorlage zum Crawlen von Daten verwendet. Die Zielwebsite, die wir crawlen werden, ist eine Website mit Filminformationen, und die neuesten Filminformationen werden auf der Homepage der Website aufgeführt. Wir müssen den Namen, den Regisseur, die Schauspieler, die Bewertungen und andere Informationen des Films von dieser Website crawlen und in einer lokalen Datenbank speichern.
Zuerst müssen Sie das Befehlszeilenfenster öffnen, zum Zielarbeitsverzeichnis wechseln und dann den folgenden Befehl eingeben:
scrapy startproject movies
Dieser Befehl erstellt ein Scrapy-Projekt mit dem Namen movies Projektverzeichnis, Enthält ein Unterverzeichnis namens Spiders, das zum Platzieren von Crawler-Programmen verwendet wird.
Verwenden Sie im Projektverzeichnis den folgenden Befehl, um einen Spider mit dem Namen movie_spider zu erstellen:
scrapy genspider movie_spider www.movies.com
Dieser Befehl generiert automatisch ein Programm basierend auf der Spider-Vorlage, wobei www.movies.com das darstellt Ziel Der Domänenname der Website. Im Spiders-Verzeichnis erscheint eine Datei namens movie_spider.py mit folgendem Inhalt:
import scrapy class MovieSpider(scrapy.Spider): name = 'movie_spider' allowed_domains = ['www.movies.com'] start_urls = ['http://www.movies.com/'] def parse(self, response): pass
Dies ist das einfachste Spider-Programm. Dabei stellt Name den Namen des Crawlers dar, erlaubte_Domänen stellt die Liste der Domänennamen dar, die gecrawlt werden dürfen, und start_urls stellt die Liste der URLs dar, die mit dem Crawlen beginnen. Bei der Parse-Methode müssen wir Code für das Parsen und Erfassen von Daten schreiben.
Wir müssen Code schreiben, um die Daten der Zielwebsite aus dem Antwortobjekt zu erfassen und zu analysieren. Für die gerade erwähnte Website mit Filminformationen können wir XPath- oder CSS-Selektoren verwenden, um Elemente auf der Seite zu finden. Unter der Annahme, dass der Filmname in einem div-Element mit der Klasse movie-name auf der Seite gespeichert ist, können wir den folgenden Code verwenden, um alle Filmnamen zu extrahieren:
def parse(self, response): movies = response.xpath('//div[@class="movie-name"]/text()').extract() for movie in movies: yield {'name': movie}
Hier verwenden wir die XPath-Syntax, um alle Klassen movie-name von zu finden das div-Element und verwenden Sie die Extract-Methode, um den Textinhalt im Element zu extrahieren. Als nächstes verwenden wir eine for-Schleife, um jeden Filmnamen als Ausgabe des Generators zu erhalten.
Ähnlich können wir über XPath- oder CSS-Selektoren andere Elemente finden, die uns interessieren. Informationen zum Regisseur und Schauspieler können beispielsweise in einem div-Element mit der Klasse „director“ gespeichert werden, und Bewertungsinformationen können in einem div-Element mit der Klasse „rate“ gespeichert werden.
Im Spider-Programm müssen wir Code schreiben, um die erfassten Daten in einer lokalen oder Cloud-Datenbank zu speichern. Scrapy unterstützt das Speichern von Daten in einer Vielzahl unterschiedlicher Datenbanken, darunter MySQL, PostgreSQL, MongoDB usw.
Zum Beispiel können wir die MySQL-Datenbank verwenden, um Filminformationen zu speichern. Im Spiders-Verzeichnis können wir eine Datei namens mysql_pipeline.py erstellen, die den folgenden Code enthält:
import pymysql class MysqlPipeline(object): def __init__(self): self.conn = pymysql.connect(host='localhost', user='root', passwd='123456', db='movie_db', charset='utf8') def process_item(self, item, spider): cursor = self.conn.cursor() sql = "INSERT INTO movie(name, director, actors, rate) VALUES(%s, %s, %s, %s)" cursor.execute(sql, (item['name'], item['director'], item['actors'], item['rate'])) self.conn.commit() def __del__(self): self.conn.close()
Dieses Programm speichert die Implementierungsdaten in der MySQL-Datenbank, wobei movie_db der Datenbankname ist und die Filmtabelle den Namen enthält , Regisseur, Vier Felder, Schauspieler und Rate, werden zum Speichern von Filmnamen, Regisseur, Schauspielern und Bewertungsinformationen verwendet. Die Methode „process_item“ wird verwendet, um die im Spider-Programm generierten Elemente in der Datenbank zu speichern.
Um die Datei „mysql_pipeline.py“ verwenden zu können, müssen wir außerdem die folgende Konfiguration in der Datei „settings.py“ hinzufügen:
ITEM_PIPELINES = { 'movies.spiders.mysql_pipeline.MysqlPipeline': 300 }
Hier gibt „movies.spiders.mysql_pipeline.MysqlPipeline“ den Speicherort und den Klassennamen der mysql_pipeline an .py-Datei. Die Zahl 300 gibt die Priorität der Datenverarbeitung an. Je kleiner die Zahl, desto höher die Priorität.
Führen Sie im Spiders-Verzeichnis den folgenden Befehl aus, um das Scrapy-Programm auszuführen:
scrapy crawl movie_spider
Dieser Befehl startet das Crawler-Programm namens movie_spider, um mit dem Crawlen der Daten der Zielwebsite und deren Speicherung zu beginnen MySQL-Datenbank.
3. Zusammenfassung
In diesem Artikel wird erläutert, wie Sie Scrapys eigene Crawler-Vorlagen zum Crawlen von Daten verwenden, einschließlich der Spider-Vorlage, der CrawlSpider-Vorlage und der XmlFeedSpider-Vorlage. Anhand eines praktischen Beispiels veranschaulichen wir, wie Spider-Vorlagen zum Erfassen und Analysieren von Daten sowie zum Speichern der Ergebnisse in einer MySQL-Datenbank verwendet werden. Die Verwendung von Scrapy zur Datenerfassung kann die Effizienz und Qualität der Datenerfassung erheblich verbessern und eine starke Unterstützung für nachfolgende Datenanalyse, Data Mining und andere Arbeiten bieten.
Das obige ist der detaillierte Inhalt vonScrapy ist eine Daten-Scraping-Anwendung, die Crawler-Vorlagen enthält. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!