【发布时间】:2018-11-16 10:50:21
【问题描述】:
我需要使用 Scrapy按顺序发送我的请求。
def n1(self, response) :
#self.input = [elem1,elem2,elem3,elem4,elem5, .... ,elem100000]
for (elem,) in self.input :
link = urljoin(path,elem)
yield Request(link)
我的问题是请求不按顺序排列。 我读了this question,但没有正确答案。
我应该如何更改用于按顺序发送请求的代码?
更新 1
我使用了优先级并将我的代码更改为
def n1(self, response) :
#self.input = [elem1,elem2,elem3,elem4,elem5, .... ,elem100000]
self.prio = len(self.input)
for (elem,) in self.input :
self.prio -= 1
link = urljoin(path,elem)
yield Request(link, priority=self.prio)
我对这个蜘蛛的设置是
custom_settings = {
'DOWNLOAD_DELAY' : 0,
'COOKIES_ENABLED' : True,
'CONCURRENT_REQUESTS' : 1 ,
'AUTOTHROTTLE_ENABLED' : False,
}
现在顺序变了,但不是数组中元素的顺序
【问题讨论】:
-
尝试在请求中检查
priority:doc.scrapy.org/en/latest/topics/request-response.html -
@ElenaSh。谢谢,我尝试了你的建议,并更新了我的问题
标签: scrapy python-requests yield