Heim  >  Artikel  >  Backend-Entwicklung  >  So implementieren Sie den Crawler für geplante Aufgaben mit Scrapy

So implementieren Sie den Crawler für geplante Aufgaben mit Scrapy

王林
王林Original
2023-06-22 12:54:562804Durchsuche

Mit der Entwicklung des Internets werden Webcrawler häufig zur Datenerfassung und -analyse eingesetzt. Scrapy ist ein häufig verwendetes Crawler-Framework, das leistungsstarke Funktionen und effiziente Verarbeitungsmöglichkeiten bietet. Wie implementiert Scrapy geplante Task-Crawler für Geschäftsszenarien, die ein regelmäßiges Crawlen von Daten erfordern? In diesem Artikel wird die Methode von Scrapy zur Implementierung geplanter Task-Crawler vorgestellt und Beispiele bereitgestellt.

1. Wie man geplante Scrapy-Aufgaben implementiert APScheduler ist ein schlankes Framework für geplante Aufgaben, das mehrere Aufgabenauslöser und -planer unterstützt. Im Scrapy-Framework ist die Implementierung geplanter Aufgaben über APScheduler relativ einfach und leicht zu warten.

2. Spezifische Schritte zum Implementieren geplanter Scrapy-Aufgaben

Installieren Sie das APScheduler-Paket
  1. Verwenden Sie pip, um das APScheduler-Paket in der Scrapy-Umgebung zu installieren, und führen Sie den folgenden Befehl aus:
pip install apscheduler

Erstellen Sie eine geplante Aufgabe
  1. Fügen Sie im Scrapy-Projekt den folgenden Code zur Datei „settings.py“ hinzu:
# 配置APScheduler

SCHEDULER = "scrapy_apscheduler.schedulers.Scheduler"

# 启用持久化
SCHEDULER_PERSIST = True

# 任务调度器
SCHEDULER_JOBSTORES = {
    'default': SQLAlchemyJobStore(url='sqlite:///jobs.sqlite')
}

# 调度器时间间隔
SCHEDULER_EXECUTORS = {
    'default': {'type': 'threadpool', 'max_workers': 20},
    'processpool': ProcessPoolExecutor(5)
}

# 任务触发器
SCHEDULER_TRIGGER = 'interval'

# 时间间隔
SCHEDULER_SECONDS = 3600

# 启用定时任务扩展
EXTENSIONS = {
    'scrapy_apscheduler.extension.SchedulerExtension': 500,
}

Im obigen Code haben wir APScheduler-bezogene Parameter konfiguriert und das Zeitintervall auf 3600 Sekunden festgelegt, was bedeutet, dass die Crawler-Aufgabe einmal pro Stunde ausgeführt wird.

Crawler-Aufgaben schreiben
  1. Als nächstes können wir mit dem Schreiben spezifischer Crawler-Aufgaben beginnen. Wir fügen der Datei „settings.py“ im Scrapy-Projekt noch den folgenden Code hinzu:
from scrapy_apscheduler.jobstores import DjangoJobStore

# 配置定时任务
JOBS = [
    {
        'id': 'task1',
        'func': '项目名称.spiders.爬虫名称',
        'args': None,
        'trigger': {
            'type': 'cron',
            ‘hour’: ’14',
            ‘minute’: ’30'
        },
    }
]

# 配置任务存储
SCHEDULER_JOBSTORES = {
    'default': DjangoJobStore(),
}

Im obigen Code geben wir die Crawler-Aufgabe mit einer Ausführungszeit von 14:30 an. Wir müssen den Inhalt in JOBS an unsere eigenen Bedürfnisse anpassen. Der Parameter func gibt die auszuführende Crawler-Aufgabe an. Ersetzen Sie im obigen Beispiel einfach den Crawler-Namen durch Ihren eigenen Crawler-Namen.

Starten Sie die geplante Scrapy-Aufgabe.
  1. Fügen Sie abschließend den folgenden Code in das Startskript des Scrapy-Projekts ein:
from scrapy.cmdline import execute
from scrapy_apscheduler.scheduler import Scheduler

scheduler = Scheduler()
scheduler.start()

execute(['scrapy', 'crawl', '爬虫名称'])

scheduler.shutdown()

Im obigen Code haben wir den Scheduler der geplanten Scrapy-Aufgabe eingeführt und den Scheduler vor der Ausführung gestartet Crawler-Aufgabe: Schließen Sie den Scheduler nach der Ausführung.

3. Fallanalyse

Das Folgende ist ein Beispiel für das Crawlen von Wettervorhersageinformationen und deren regelmäßige Aktualisierung.

import scrapy
import json

class WeatherSpider(scrapy.Spider):
    name = "weather"
    allow_domains = ["tianqi.com"]
    start_urls = ["http://www.tianqi.com/"]
    
    def parse(self, response):
        # 爬取天气预报信息
        weather_info = {"city": "chengdu", "temperature": "25C", "condition": "sun"}
        yield weather_info
        
        # 更新天气预报信息
        with open("weather_file.txt", "w") as f:
            json.dump(weather_info, f)

Befolgen Sie nach dem Schreiben der Crawler-Datei die Schritte zum Implementieren der geplanten Scrapy-Aufgabe und konfigurieren Sie die Aufgabe und das geplante Aufgabenskript in „settings.py“.

4. Zusammenfassung

Scrapy ist ein effizientes und zuverlässiges Crawler-Framework und es ist relativ einfach, geplante Task-Crawler zu implementieren. Mit dem APScheduler-Tool können wir geplante Aufgaben planen und Datenaktualisierungen und -persistenz erreichen. In tatsächlichen Geschäftsszenarien werden Scrapy-Crawler für geplante Aufgaben häufig verwendet und bieten starke Unterstützung für die Analyse von Unternehmensdaten und die Anwendungsentwicklung.

Das obige ist der detaillierte Inhalt vonSo implementieren Sie den Crawler für geplante Aufgaben mit Scrapy. 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