Heim > Artikel > Backend-Entwicklung > Scrapy in Aktion: Daten zu Douban-Filmen durchsuchen und Beliebtheitsrankings bewerten
Scrapy ist ein Open-Source-Python-Framework zum schnellen und effizienten Scrapen von Daten. In diesem Artikel verwenden wir Scrapy, um die Daten zu crawlen und die Beliebtheit von Douban-Filmen zu bewerten.
Zuerst müssen wir Scrapy installieren. Sie können Scrapy installieren, indem Sie den folgenden Befehl in die Befehlszeile eingeben:
pip install scrapy
Als nächstes erstellen wir ein Scrapy-Projekt. Geben Sie in der Befehlszeile den folgenden Befehl ein:
scrapy startproject doubanmovie
Dadurch wird ein Scrapy-Projekt namens doubanmovie erstellt. Anschließend gehen wir in das Projektverzeichnis und erstellen einen Spider namens douban.py. Geben Sie in der Befehlszeile den folgenden Befehl ein:
cd doubanmovie scrapy genspider douban douban.com
Jetzt haben wir einen Spider einsatzbereit. Als nächstes definieren wir das Verhalten der Spinne, um die erforderlichen Daten zu erhalten.
Wir werden Spider verwenden, um Douban-Filmdaten zu crawlen. Konkret erhalten wir folgende Informationen:
Open do uban .py-Datei hinzufügen, fügen wir den folgenden Code hinzu:
import scrapy class DoubanSpider(scrapy.Spider): name = 'douban' allowed_domains = ['douban.com'] start_urls = ['https://movie.douban.com/top250'] def parse(self, response): movie_list = response.xpath('//div[@class="item"]') for movie in movie_list: yield { 'name': movie.xpath('.//span[@class="title"]/text()').get(), 'director': movie.xpath('.//div[@class="bd"]/p/text()[1]').get(), 'actors': movie.xpath('.//div[@class="bd"]/p/text()[2]').get(), 'genre': movie.xpath('.//div[@class="bd"]/p/text()[3]').get(), 'country': movie.xpath('.//div[@class="bd"]/p/text()[4]').get(), 'language': movie.xpath('.//div[@class="bd"]/p/text()[5]').get(), 'release_date': movie.xpath('.//div[@class="bd"]/p/text()[6]').get(), 'duration': movie.xpath('.//div[@class="bd"]/p/text()[7]').get(), 'rating': movie.xpath('.//span[@class="rating_num"]/text()').get(), 'num_reviews': movie.xpath('.//div[@class="star"]/span[@class="rating_num"]/text()').get(), }
In diesem Code verwenden wir XPath, um die Informationen auszuwählen, die wir benötigen. Wir verwenden yield, um diese Informationen zu generieren und return, um sie an den Benutzer zurückzugeben.
Wenn wir jetzt unseren Spider ausführen (führen Sie den folgenden Befehl aus: scrapy crawl douban), crawlt er die Daten für die 250 besten Filme und gibt sie an die Befehlszeile zurück.
Jetzt haben wir erfolgreich die Daten der 250 besten Filme erhalten. Als nächstes erhalten wir das Ranking ihrer Beliebtheitsbewertung.
Wir müssen zuerst einen neuen Spider erstellen, um die TOP250-Liste der Douban-Filme zu crawlen. Wir werden diese Liste verwenden, um die Rangfolge der Filme zu ermitteln.
In der Datei douban.py fügen wir den folgenden Code hinzu:
import scrapy class DoubanSpider(scrapy.Spider): name = 'douban' allowed_domains = ['douban.com'] start_urls = ['https://movie.douban.com/top250'] def parse(self, response): movie_list = response.xpath('//div[@class="item"]') for movie in movie_list: yield { 'name': movie.xpath('.//span[@class="title"]/text()').get(), 'director': movie.xpath('.//div[@class="bd"]/p/text()[1]').get(), 'actors': movie.xpath('.//div[@class="bd"]/p/text()[2]').get(), 'genre': movie.xpath('.//div[@class="bd"]/p/text()[3]').get(), 'country': movie.xpath('.//div[@class="bd"]/p/text()[4]').get(), 'language': movie.xpath('.//div[@class="bd"]/p/text()[5]').get(), 'release_date': movie.xpath('.//div[@class="bd"]/p/text()[6]').get(), 'duration': movie.xpath('.//div[@class="bd"]/p/text()[7]').get(), 'rating': movie.xpath('.//span[@class="rating_num"]/text()').get(), 'num_reviews': movie.xpath('.//div[@class="star"]/span[@class="rating_num"]/text()').get(), } next_page = response.xpath('//span[@class="next"]/a/@href') if next_page: url = response.urljoin(next_page[0].get()) yield scrapy.Request(url, callback=self.parse)
Im Code verwenden wir eine Variable namens next_page, um zu überprüfen, ob wir die letzte Seite erreicht haben. Wenn wir die letzte Seite noch nicht erreicht haben, crawlen wir weiter zur nächsten Seite.
Als nächstes müssen wir die Parse-Methode aktualisieren, um die Rangfolge des Films zu erhalten. Wir werden die Enumerate-Funktion von Python verwenden, um jedem Film eine Rangfolge zuzuordnen.
In der Datei douban.py ersetzen wir die ursprüngliche Parse-Methode durch:
def parse(self, response): movie_list = response.xpath('//div[@class="item"]') for i, movie in enumerate(movie_list): yield { 'rank': i + 1, 'name': movie.xpath('.//span[@class="title"]/text()').get(), 'director': movie.xpath('.//div[@class="bd"]/p/text()[1]').get(), 'actors': movie.xpath('.//div[@class="bd"]/p/text()[2]').get(), 'genre': movie.xpath('.//div[@class="bd"]/p/text()[3]').get(), 'country': movie.xpath('.//div[@class="bd"]/p/text()[4]').get(), 'language': movie.xpath('.//div[@class="bd"]/p/text()[5]').get(), 'release_date': movie.xpath('.//div[@class="bd"]/p/text()[6]').get(), 'duration': movie.xpath('.//div[@class="bd"]/p/text()[7]').get(), 'rating': movie.xpath('.//span[@class="rating_num"]/text()').get(), 'num_reviews': movie.xpath('.//div[@class="star"]/span[@class="rating_num"]/text()').get(), } next_page = response.xpath('//span[@class="next"]/a/@href') if next_page: url = response.urljoin(next_page[0].get()) yield scrapy.Request(url, callback=self.parse)
Wenn wir nun unseren Spider erneut ausführen, ruft er die Daten für die ersten 250 Filme ab und gibt sie an die Befehlszeile zurück. An dieser Stelle sehen wir die Rangliste aller Filme.
Scrapy ist ein sehr leistungsstarkes und flexibles Tool zum schnellen und effizienten Scrapen von Daten. In diesem Artikel haben wir Scrapy erfolgreich verwendet, um Douban-Filmdaten zu crawlen und Beliebtheitsrankings zu bewerten.
Wir verwenden Python-Code und XPath, um selektiv Informationen auf der Webseite abzurufen und verwenden Yield-Anweisungen, um sie an den Benutzer zurückzugeben. Während des gesamten Prozesses bietet Scrapy eine einfache und effektive Möglichkeit, große Datenmengen zu verwalten und zu crawlen, sodass wir Daten schnell analysieren und verarbeiten können.
Das obige ist der detaillierte Inhalt vonScrapy in Aktion: Daten zu Douban-Filmen durchsuchen und Beliebtheitsrankings bewerten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!