Heim  >  Artikel  >  Backend-Entwicklung  >  Ein Muss für neue Crawler: Scrapy Getting Started Guide

Ein Muss für neue Crawler: Scrapy Getting Started Guide

王林
王林Original
2023-06-22 09:05:511700Durchsuche

Im Hinblick auf die Datenerfassung sind Webcrawler zu einem unverzichtbaren Werkzeug geworden. Für diejenigen, die neu im Erlernen und Beherrschen von Web-Scraping-Techniken sind, kann die Auswahl der richtigen Tools und Frameworks jedoch verwirrend sein. Unter den vielen Web-Crawling-Tools ist Scrapy ein sehr beliebtes Tool. Scrapy ist ein Open-Source-Python-Framework, das einen flexiblen Ansatz zum Verarbeiten und Extrahieren von Daten bietet.

In diesem Artikel stelle ich Ihnen die Grundlagen von Scrapy vor und erkläre, wie Sie einen einfachen Webcrawler in Scrapy erstellen.

1. Scrapy-Erste-Schritte-Anleitung

  1. Scrapy installieren

Bevor Sie beginnen, müssen Sie zunächst Scrapy installieren. Die Installation von Scrapy ist sehr einfach. Führen Sie einfach den folgenden Befehl in der Befehlszeile aus:

pip install scrapy
  1. Erstellen Sie ein Scrapy-Projekt.

Beim Erstellen eines Scrapy-Projekts können Sie den folgenden Befehl verwenden:

scrapy startproject <project_name>

Dadurch wird ein Scrapy-Projekt erstellt Legen Sie im aktuellen Verzeichnis einen Ordner mit dem Namen 4f8ef3960903de9df09005478c35c0fb an und erstellen Sie dort die erforderlichen Dateien und Ordner.

  1. Spider erstellen

In Scrapy ist Spider die Hauptkomponente, die wir zum Crawlen von Daten verwenden. Spider definiert, wie man mit der Anforderung von URLs beginnt, wie man Links folgt und wie man Seiten analysiert. In Scrapy können wir den folgenden Befehl verwenden, um einen Spider zu erstellen:

scrapy genspider <spider_name> <domain_name>

Dadurch wird ein neuer Spider im Projekt erstellt und im Spiders-Verzeichnis gespeichert. Sie können die von uns benötigten Anforderungs- und Parsing-Methoden definieren, indem Sie den Spider bearbeiten.

  1. Crawling-Website konfigurieren

Es ist sehr wichtig, die Crawling-Website zu konfigurieren. Wir müssen die Website-URL definieren, die in der Spider-Datei gecrawlt werden soll, und wie die Anfrage konfiguriert wird. In Scrapy kann diese Funktion durch Schreiben der start_requests-Methode erreicht werden. Diese Methode wird aufgerufen, wenn der Spider startet und eine Anfrage von einer bestimmten URL sendet.

  1. Seitenparsing

In Scrapy ist das Parsen von Webseiten der wichtigste Schritt. Wir können XPath- oder CSS-Selektoren verwenden, um die Seite zu analysieren und die erforderlichen Daten zu extrahieren. Im Spider-Code können Sie die Seite analysieren, indem Sie die Parse-Methode schreiben und die oben genannten Tools verwenden.

  1. Daten speichern

Abschließend müssen wir die extrahierten Daten in einer Datenbank oder Datei speichern. In Scrapy können Sie Pipeline verwenden, um diesen Vorgang auszuführen. Pipeline ist ein Mechanismus zur Datenverarbeitung. Sie definiert spezifische Methoden zur Datenbereinigung, Filterung, Transformation, Speicherung, Ausgabe usw.

2. Ein einfaches Beispiel

Jetzt schreiben wir einen einfachen Spider und verwenden Scrapy, um die Daten der Top 250 Douban-Filme abzurufen. Erstellen Sie zunächst ein neues Projekt in der Befehlszeile mit dem folgenden Befehl:

scrapy startproject tutorial

Gehen Sie in den Tutorial-Ordner und erstellen Sie einen Spider mit dem Namen douban_spider:

scrapy genspider douban_spider movie.douban.com

Als nächstes müssen wir diesen Spider konfigurieren, um Seiten anzufordern und Webseiten zu analysieren. Fügen Sie den folgenden Code in die Spider-Datei ein:

import scrapy

class DoubanSpider(scrapy.Spider):
    name = "douban"
    allowed_domains = ["movie.douban.com"]
    start_urls = [
        "https://movie.douban.com/top250"
    ]

    def parse(self, response):
        for sel in response.xpath('//div[@class="info"]'):
            title = sel.xpath('div[@class="hd"]/a/span/text()').extract()
            yield {'title': title}

Im obigen Code definieren wir zunächst den Namen des Spiders und den Domänennamen der gecrawlten Website. Als Nächstes definierten wir die URLs, die wir crawlen wollten, und schrieben die Parse-Methode, um die Seite zu analysieren und die benötigten Daten zu extrahieren.

Für jedes Element mit dem Klassenattribut „info“ verwenden wir XPath, um die Elemente mit dem Filmtitel zu extrahieren und diese Elemente mit dem Schlüsselwort yield zurückzugeben.

Abschließend müssen wir die extrahierten Daten speichern. Zur Verarbeitung und Speicherung der extrahierten Daten kann eine neue Pipeline erstellt werden. Hier ist eine einfache Pipeline, die die extrahierten Daten in einer JSON-Datei speichert:

import json

class TutorialPipeline(object):

    def __init__(self):
        self.file = open('douban_top250.json', 'w')

    def process_item(self, item, spider):
        line = json.dumps(dict(item)) + "
"
        self.file.write(line)
        return item

    def spider_closed(self, spider):
        self.file.close()

Zuletzt müssen wir die Pipeline in Settings.py konfigurieren. Fügen Sie einfach den folgenden Code in ITEM_PIPELINES hinzu:

ITEM_PIPELINES = {
    'tutorial.pipelines.TutorialPipeline': 100,
}

Jetzt haben wir einen einfachen Scrapy Spider geschrieben und können ihn starten, indem Sie den folgenden Befehl ausführen:

scrapy crawl douban

Nach der Ausführung des Befehls beginnt Scrapy, eine Seite anzufordern und die Daten zu analysieren. Die extrahierten Daten werden in einer JSON-Datei gespeichert.

3. Fazit

Scrapy ist ein sehr flexibles und leistungsstarkes Webcrawler-Framework. Mit Scrapy können wir ganz einfach einen effizienten und skalierbaren Webcrawler erstellen und die erforderlichen Daten extrahieren. Dieser Artikel stellt die Grundlagen von Scrapy vor und bietet ein einfaches Beispiel, um Anfängern beim Erlernen von Webcrawlern zu helfen.

Das obige ist der detaillierte Inhalt vonEin Muss für neue Crawler: Scrapy Getting Started Guide. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen 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