Comment implémenter un robot d'exploration de tâches planifiées avec Scrapy

王林
Libérer: 2023-06-22 12:54:56
original
2826 Les gens l'ont consulté

Avec le développement d'Internet, les robots d'exploration Web sont largement utilisés pour la collecte et l'analyse de données. Scrapy est un framework d'exploration couramment utilisé qui fournit des fonctions puissantes et des capacités de traitement efficaces. Pour les scénarios commerciaux qui nécessitent une analyse régulière des données, comment Scrapy implémente-t-il des robots d'exploration de tâches planifiées ? Cet article présentera la méthode de Scrapy pour implémenter les robots d'exploration de tâches planifiées et fournira des exemples.

1. Comment implémenter les tâches planifiées Scrapy

Scrapy est un framework d'exploration développé sur la base de Python. Les tâches planifiées peuvent être implémentées via l'outil de tâches planifiées de Python - APScheduler. APScheduler est un framework de tâches planifiées léger qui prend en charge plusieurs déclencheurs et planificateurs de tâches. Dans le framework Scrapy, la mise en œuvre de tâches planifiées via APScheduler est relativement simple et facile à maintenir.

2. Étapes spécifiques pour implémenter les tâches planifiées Scrapy

  1. Installez le package APScheduler

Utilisez pip pour installer le package APScheduler dans l'environnement Scrapy et exécutez la commande suivante :

pip install apscheduler
Copier après la connexion
  1. Créez une tâche planifiée

Dans le projet Scrapy, ajoutez le code suivant au fichier settings.py :

# 配置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,
}
Copier après la connexion

Dans le code ci-dessus, nous avons configuré les paramètres liés à APScheduler et défini l'intervalle de temps à 3 600 secondes, ce qui signifie que la tâche du robot est exécutée une fois toutes les heures.

  1. Écrire des tâches de robot d'exploration

Ensuite, nous pouvons commencer à écrire des tâches de robot d'exploration spécifiques. Nous ajoutons toujours le code suivant au fichier settings.py dans le projet Scrapy :

from scrapy_apscheduler.jobstores import DjangoJobStore

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

# 配置任务存储
SCHEDULER_JOBSTORES = {
    'default': DjangoJobStore(),
}
Copier après la connexion

Dans le code ci-dessus, nous spécifions la tâche du robot avec un temps d'exécution de 14h30. Nous devons modifier le contenu de JOBS en fonction de nos propres besoins. Le paramètre func spécifie la tâche du robot à exécuter. Par exemple, dans l'exemple ci-dessus, remplacez simplement le nom du robot par votre propre nom de robot.

  1. Démarrer la tâche planifiée Scrapy

Enfin, introduisez le code suivant dans le script de démarrage du projet Scrapy :

from scrapy.cmdline import execute
from scrapy_apscheduler.scheduler import Scheduler

scheduler = Scheduler()
scheduler.start()

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

scheduler.shutdown()
Copier après la connexion

Dans le code ci-dessus, nous avons introduit le planificateur de la tâche planifiée Scrapy et avons démarré le planificateur avant d'exécuter le tâche de robot d'exploration, fermez le planificateur après l'exécution.

3. Analyse de cas

Ce qui suit est un exemple d'exploration des informations de prévisions météorologiques et de leur mise à jour régulière.

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)
Copier après la connexion

Après avoir écrit le fichier du robot, suivez les étapes pour implémenter la tâche planifiée Scrapy et configurez la tâche et le script de tâche planifiée dans settings.py.

4. Résumé

Scrapy est un framework de robots d'exploration efficace et fiable, et il est relativement simple de mettre en œuvre des robots d'exploration de tâches planifiées. Grâce à l'outil APScheduler, nous pouvons planifier des tâches planifiées et réaliser la mise à jour et la persistance des données. Dans les scénarios commerciaux réels, les robots d'exploration de tâches planifiées Scrapy sont largement utilisés, offrant un support solide pour l'analyse des données d'entreprise et le développement d'applications.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!