scrapy 在脚本中循环调用爬虫

0.问题描述

需要定时爬取一个页面,从中取得不同时间段的数据

1.解决方案

使用CrawlerRunner通过链接延迟顺序运行爬虫
代码如下:

#引入你的爬虫
from twisted.internet import reactor, defer
from scrapy.crawler import CrawlerRunner
from scrapy.utils.log import configure_logging
import time
import logging
from scrapy.utils.project import get_project_settings


#在控制台打印日志
configure_logging()
#CrawlerRunner获取settings.py里的设置信息
runner = CrawlerRunner(get_project_settings())

@defer.inlineCallbacks
def crawl():
    while True:
        logging.info("new cycle starting")
        yield runner.crawl(爬虫的名字)
        #一分钟跑一次
        time.sleep(60)
    reactor.stop()

crawl()
reactor.run() # the script will block here until the last crawl call is finished

其中inlineCallbacks 是一个修饰符,它总是修饰生成器函数,如那些使用 yield 语句的函数. inlineCallbacks 的全部目的是将一个生成器按照上述策略转化为一系列异步回调.
关于inlineCallbacks更多的相关知识请参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值