繁体   English   中英

递归调用其他URL,并等待第一个站点完成使用scrapy for Python进行抓取

[英]Recursively call different URL and wait for first site to be finished scraping using scrapy for Python

我想知道是否有一种方法可以递归调用多个站点,以使其更具动态性。 我的老师要求让多个网站爬网。 这就是我所拥有的。

def start_requests(self):
    yield scrapy.Request("http://www.tripadvisor.in/Hotel_Review-g1009352-d1173080-Reviews-Yercaud_Rock_Perch_A_Sterling_Holidays_Resort-Yercaud_Tamil_Nadu.html", self.parse)
    yield scrapy.Request("http://www.tripadvisor.in/Hotel_Review-g297600-d8029162-Reviews-Daman_Casa_Tesoro-Daman_Daman_and_Diu.html", self.parse)
    yield scrapy.Request("http://www.tripadvisor.in/Hotel_Review-g304557-d2519662-Reviews-Darjeeling_Khushalaya_Sterling_Holidays_Resort-Darjeeling_West_Bengal.html", self.parse)

它在大多数情况下都有效,但它是一个接一个地完成的。是否有办法一次使其一次通过一个站点呢? 总结起来,我需要一次通过一次收益,然后一旦完成,就转到下一个地点,依此类推。

不,没有办法使用Scrapy的默认配置执行此操作。

该工具的主要思想是加快信息收集速度 为此,它会并行刮擦站点。 如果产生一个Request它就会进入队列,并且一旦进程或线程准备就绪,就会被抓取。 然后结果进入另一个队列,然后将其抓取( parse方法或已定义的callback与响应一起执行)。

为了使一个站点被另一个站点抓取,请尝试使用CONCURRENT_REQUESTS = 1设置将settings.py文件中的并发请求减少为CONCURRENT_REQUESTS = 1

您可以在docs中阅读有关设置的更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM