[英]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.