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()
关键步骤:
- 确保scrapyd服务正常运行:
scrapyd - 部署爬虫到scrapyd:
scrapyd-deploy target -p myproject - 根据需求选择上述任一方案配置定时
简单说,crontab方案最稳定,Python方案更灵活。
分布式可以试试 scrapy-redis
我用的 scrapy-redis 但是不知道怎么协同启动爬虫 我需要反复的监控这个网站
如何简单高效地部署和监控分布式爬虫项目 https://www.v2ex.com/t/507933


