Python 已损坏的FormRequest与Scrapy
我从一个简单的请求开始,当我得到回调时,pre_结果在本例中,我想向表单发送x个POST请求,以获取所有可能的信息。当我发送请求时,它每次都发送相同的请求 我知道url是正确的,值是正确的。看起来for循环以某种方式破坏了请求。难道不能从scrapy中的自定义解析方法发送多个FormRequests吗?我试过延迟10秒,但仍然没有成功Python 已损坏的FormRequest与Scrapy,python,scrapy,Python,Scrapy,我从一个简单的请求开始,当我得到回调时,pre_结果在本例中,我想向表单发送x个POST请求,以获取所有可能的信息。当我发送请求时,它每次都发送相同的请求 我知道url是正确的,值是正确的。看起来for循环以某种方式破坏了请求。难道不能从scrapy中的自定义解析方法发送多个FormRequests吗?我试过延迟10秒,但仍然没有成功 def pre_results(self, response): hxs = HtmlXPathSelector(response) log.ms
def pre_results(self, response):
hxs = HtmlXPathSelector(response)
log.msg("Refining results with number %d and url %s" % (response.meta['item']['number'], response.url), log.INFO)
minurl = response.url.replace("results", "refine_results")
requests = []
for value in hxs.select('//select[@id="profile_electricity_plan_type"]/option/@value').extract():
request = FormRequest(url=minurl,
formdata={'profile[electricity_plan_type]' : value}, #This value is correct
callback=self.step_results,
dont_filter=True) # To be able to send to the same URL
request.meta['item'] = response.meta['item']
request.meta['item']['company'] = value
yield request
如果有人有意见,我非常感谢。
谢谢
编辑:
它发送X个请求,其值与它迭代的值中的最后一个值相同。至少当它点击self.step_results时,结果都是一样的。您确定在循环中得到了不同的值吗?另外,在访问response.meta['item']['company']时,您是否在step_results方法中看到不同的值?这是奇怪的部分。我已经在循环中记录了这些值,它有正确的值。我甚至成功地记录了request.meta['item']['company']。当响应出现在self.step_结果中时,它们都具有相同的值。好的,那么您如何检查self.step_结果中的值?就像您所说的那样。请您注释掉request.meta['item']=response.meta['item']并用request.meta['test']=value替换request.meta['item'['company']=value和request.meta['test'=value?执行print response.meta['test']时,查看步骤_结果中打印的内容?