Maison  >  Article  >  développement back-end  >  Comment implémenter un robot d'exploration de tâches planifiées avec Scrapy

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

王林
王林original
2023-06-22 12:54:562804parcourir

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
  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,
}

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(),
}

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()

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)

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!

Déclaration:
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