Python中如何使用scrapyd实现爬虫定时采集

看了一下 scrapyd 的 api 感觉功能好少啊 而且对分布式也没有支持 我现在遇到的问题是是需要采集一家电商网站 然后反复爬取 进行价格的监控 请问下有没有大佬有思路


Python中如何使用scrapyd实现爬虫定时采集
6 回复

还有就是如何同时启动分布式爬虫 求思路!


用scrapyd实现爬虫定时采集,核心是结合scrapyd的API和系统的定时任务工具。

方案一:Linux crontab + curl(推荐) 这是最简单直接的方式。在crontab中配置定时任务,通过curl调用scrapyd的schedule接口。

# 编辑crontab
crontab -e

# 添加定时任务,例如每天凌晨2点执行
0 2 * * * curl http://localhost:6800/schedule.json -d project=myproject -d spider=myspider

方案二:Python脚本 + schedule库 如果你想要更灵活的Python控制,可以这样写:

import requests
import schedule
import time

def run_spider():
    url = 'http://localhost:6800/schedule.json'
    data = {
        'project': 'myproject',
        'spider': 'myspider'
    }
    response = requests.post(url, data=data)
    print(f"Spider scheduled: {response.json()}")

# 设置定时,比如每2小时执行一次
schedule.every(2).hours.do(run_spider)

while True:
    schedule.run_pending()
    time.sleep(60)

方案三:APScheduler 对于更复杂的调度需求,APScheduler是个专业选择:

from apscheduler.schedulers.blocking import BlockingScheduler
import requests

scheduler = BlockingScheduler()

@scheduler.scheduled_job('cron', hour=2)  # 每天2点执行
def scheduled_job():
    requests.post('http://localhost:6800/schedule.json',
                  data={'project': 'myproject', 'spider': 'myspider'})

scheduler.start()

关键步骤:

  1. 确保scrapyd服务正常运行:scrapyd
  2. 部署爬虫到scrapyd:scrapyd-deploy target -p myproject
  3. 根据需求选择上述任一方案配置定时

简单说,crontab方案最稳定,Python方案更灵活。

crontab 了解一下?

分布式可以试试 scrapy-redis

我用的 scrapy-redis 但是不知道怎么协同启动爬虫 我需要反复的监控这个网站

如何简单高效地部署和监控分布式爬虫项目 https://www.v2ex.com/t/507933

回到顶部