因此,我尝试循环调用一个formrequest,该函数调用创建,填充和产生项目的函数,只有pb:无论他循环多少次,我都只能完成一项并且只有一项完成,而我无法弄清楚搞清楚为什么?
def access_data(self, res):
#receive all ID and request the infos
res_json = (res.body).decode("utf-8")
res_json = json.loads(res_json)
for a in res_json['data']:
logging.warning(a['id'])
req = FormRequest(
url='https://my_url',
cookies={my_cookies},
method='POST',
callback=self.fill_details,
formdata={'valeur': str(a['id'])},
headers={'X-Requested-With': 'XMLHttpRequest'}
)
yield req
def fill_details(self, res):
logging.warning("annonce")
item = MyItem()
item['html'] = res.xpath('//body//text()')
item['existe'] = True
item['ip_proxy'] = None
item['launch_time'] = str(mySpider.init_time)
yield item
请确保一切都清楚: 当我运行此命令时,日志“ annonce”仅打印一次,而我的请求循环中的日志a ['id']被打印很多,而我找不到解决此问题的方法
答案 0 :(得分:0)
我找到了路! 如果任何一个都具有相同的pb:,因为我的网址始终是相同的(仅更改formdata),则scrapy过滤器将控制该控件并销毁重复项。 在formrequest中将dont_filter激活为true,以使其起作用