scrapy怎么实现重复或者定时采集

重复采集怎么实现,例如每隔 20分钟
定时采集怎么实现 例如每天的6点采集

阅读 13k
3 个回答

可以使用定时任务调度实现,比如:

from apscheduler.schedulers.background import BackgroundScheduler
def task():
    # 你的spider启动命令
    pass

if __name__ == "__main__":
    scheduler = BackgroundScheduler()
    # 每20分钟执行一次
    scheduler.add_job(task, 'cron', minute="*/20")
    scheduler.start()
    print('Press Ctrl+{0} to exit'.format('Break' if os.name == 'nt' else 'C'))
    try:
        while True:
            time.sleep(2)
    except (KeyboardInterrupt, SystemExit):
        scheduler.shutdown()
    

APScheduler Documentation

schedule很好用

def crawl_work():
    # cmdline.execute('scrapy crawl my_spider'.split()) # 不要用自带的cmdline
    subprocess.Popen('scrapy crawl my_spider') # Execute a child program in a new process.

if __name__=='__main__':
    schedule.every(1).minutes.do(crawl_work)
    while True:
        schedule.run_pending()
        time.sleep(1)

苍天啊
scrapyd 没定时功能,但是有管理功能
apscheduler有定时功能,但是无法用的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进