我想创建一个每5分钟抓取一次给定网页信息的网站,我通过在递归回调之间添加5分钟的睡眠时间来实现这个功能,如下所示:
def _parse(self, response):
status_loader = ItemLoader(Status())
# perform parsing
yield status_loader.load_item()
time.sleep(5)
yield scrapy.Request(response._url,callback=self._parse,dont_filter=True,meta=response.meta)
然而,在scraper中添加time.sleep(5)似乎会扰乱scrapy的内部工作。出于某种原因,scrapy确实发出了请求,但产出项没有(或很少)输出到给定的输出文件。
我认为这与scrapy的请求优先级有关,它可能会优先发送一个新的请求,而不是产生被擦除的项目。会是这种情况吗?我试图编辑设置,从深度优先队列到宽度优先队列。这并没有解决问题。
我如何在给定的时间间隔内抓取一个网站,比如说5分钟?
1条答案
按热度按时间monwx1rj1#
因为
Scrapy
在默认情况下是异步的,所以它不会工作。试着像这样安排一个玉米工作-
这将根据您使用的
os
每5分钟运行一次您想要的spider