Scrapy-Crawler-Praxis: Crawlen von Maoyan-Film-Ranking-Daten
Mit der Entwicklung des Internets ist das Daten-Crawling zu einem wichtigen Bestandteil des Big-Data-Zeitalters geworden. Beim Daten-Crawling können mithilfe der Crawler-Technologie automatisch die aktuell benötigten Daten erfasst, verarbeitet und analysiert werden. In den letzten Jahren hat sich Python zu einer der beliebtesten Programmiersprachen entwickelt. Unter ihnen ist Scrapy ein leistungsstarkes Crawler-Framework, das ein breites Anwendungsspektrum aufweist und insbesondere im Bereich des Daten-Crawlings die Aufmerksamkeit aller auf sich gezogen hat.
Dieser Artikel basiert auf dem Scrapy-Framework zum Crawlen von Maoyan-Filmranking-Daten. Der spezifische Prozess ist in vier Teile unterteilt: Analyse der Seitenstruktur, Schreiben des Crawler-Frameworks, Parsen der Seite und Speichern von Daten.
1. Analysieren Sie die Seitenstruktur
Zuerst müssen wir die Struktur der Maoyan-Filmrankingseite analysieren. Zur Vereinfachung der Bedienung verwenden wir den Google Chrome-Browser zur Seitenanalyse und XPath zum Extrahieren der erforderlichen Informationen.
Wie Sie sehen können, enthält die Rangliste der Maoyan-Filme Informationen zu mehreren Filmen, und jeder Film verfügt über einen HTML-Codeblock ähnlich dem Bild unten.
Unser Ziel ist es, aus jedem HTML-Codeblock die fünf Daten Name des Films, Hauptrolle, Veröffentlichungszeit, Link zum Filmplakat und Bewertung zu erhalten. Dann können wir die F12-Taste drücken, um die Entwicklertools im Google Chrome-Browser zu öffnen, dann die Registerkarte „Elemente“ auswählen, die Maus auf das Zielelement bewegen, das wir extrahieren müssen, mit der rechten Maustaste klicken und „Kopieren -> XPath kopieren“ auswählen " .
Der kopierte XPath-Pfad lautet wie folgt:
/html/body/div[3]/div/div[2]/dl/dd[1]/div/div/div[1]/p[1]/ a /text()
wobei „/html/body/div[3]/div/div[2]/dl/dd“ den übergeordneten Knoten der gesamten Filmliste darstellt. In der Reihenfolge nach unten können Sie die Elemente finden wir müssen extrahieren.
2. Schreiben Sie das Crawler-Framework
Als nächstes müssen wir ein Scrapy-Projekt erstellen. Sie können sich auf die offizielle Dokumentation von Scrapy beziehen (https://docs.scrapy.org/en/latest/intro/tutorial.html). Erstellen Sie nach dem Erstellen des Projekts eine neue Datei mit dem Namen maoyan.py im Spiders-Verzeichnis.
Das Folgende ist unser Crawler-Framework-Code:
import scrapy
from maoyan.items import MaoyanItem
class MaoyanSpider(scrapy.Spider):
name = 'maoyan' allowed_domains = ['maoyan.com'] start_urls = ['http://maoyan.com/board/4'] def parse(self, response): movies = response.xpath('//dl[@class="board-wrapper"]/dd') for movie in movies: item = MaoyanItem() item['title'] = movie.xpath('.//p[@class="name"]/a/@title').extract_first() item['actors'] = movie.xpath('.//p[@class="star"]/text()').extract_first().strip() item['release_date'] = movie.xpath('.//p[@class="releasetime"]/text()').extract_first().strip() item['image_url'] = movie.xpath('.//img/@data-src').extract_first() item['score'] = movie.xpath('.//p[@class="score"]/i[@class="integer"]/text()').extract_first() + movie.xpath('.//p[@class="score"]/i[@class="fraction"]/text()').extract_first() yield item
Im Code definieren wir zunächst Spiders Namen, erlaubte Domänen und Start-URLs. Darunter bedeutet „allowed_domains“, dass nur URLs, die zu diesem Domainnamen gehören, vom Crawler abgerufen und extrahiert werden. Gleichzeitig gibt „start_urls“ die erste URL-Adresse an, die der Crawler anfordern wird.
Die Parse-Methode von Spider empfängt den Inhalt der Antwort und extrahiert dann die fünf Daten jedes Films: Name, Hauptrolle, Veröffentlichungszeit, Link zum Filmplakat und Bewertung über den XPath-Pfad und speichert sie in MaoyanItem.
Schließlich haben wir jedes Item-Objekt über das Schlüsselwort yield zurückgegeben. Hinweis: Das von uns definierte Item-Objekt befindet sich in einer Datei namens items.py und muss importiert werden.
3. Analysieren Sie die Seite
Wenn der Crawler die Seite findet, die wir crawlen müssen, können wir mit dem Parsen des HTML-Dokuments beginnen und die benötigten Informationen extrahieren. Dieser Teil des Inhalts konzentriert sich hauptsächlich auf XPath-Abfragen und die Verarbeitung regulärer Ausdrücke von Antwortobjekten in Scrapy.
In diesem Beispiel verwenden wir den XPath-Pfad, um fünf Datenelemente für jeden Film auf der Maoyan-Filmranking-Seite zu extrahieren.
4. Daten speichern
Nachdem die Daten analysiert wurden, müssen wir sie speichern. Im Allgemeinen speichern wir die erhaltenen Daten in einer Datei oder speichern sie in einer Datenbank.
In diesem Beispiel entscheiden wir uns dafür, die Daten in einer CSV-Datei zu speichern:
import csv
class MaoyanPipeline(object):
def __init__(self): self.file = open('maoyan_top100_movies.csv', 'w', newline='', encoding='utf-8') self.writer = csv.writer(self.file) def process_item(self, item, spider): row = [item['title'], item['actors'], item['release_date'], item['image_url'], item['score']] self.writer.writerow(row) return item def close_spider(self, spider): self.file.close()
Im obigen Code verwenden wir das CSV-Modul in Python, um die Daten zu importieren in eine Datei mit dem Namen maoyan_top100_movies.csv. Wenn der Spider geschlossen wird, wird auch die CSV-Datei geschlossen.
Zusammenfassung
In diesem Artikel haben wir gelernt, wie man mit dem Scrapy-Framework Ranking-Daten für Maoyan-Filme crawlt. Zuerst haben wir die Seitenstruktur analysiert und dann das Scrapy-Framework geschrieben, um Daten zu crawlen, die Seite zu analysieren und Daten zu speichern. Im tatsächlichen Kampf können wir lernen, wie wir Legalität, Benutzerfreundlichkeit und Effizienz bei der Datenerfassung vereinen können.
Das obige ist der detaillierte Inhalt vonScrapy-Crawler in Aktion: Crawlen der Ranking-Daten von Maoyan-Filmen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!