在草率的FormRequest上循环,但仅创建了一项

时间:2018-12-06 13:45:18

标签: scrapy scrapy-spider scrapy-splash

因此,我尝试循环调用一个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']被打印很多,而我找不到解决此问题的方法

1 个答案:

答案 0 :(得分:0)

我找到了路! 如果任何一个都具有相同的pb:,因为我的网址始终是相同的(仅更改formdata),则scrapy过滤器将控制该控件并销毁重复项。 在formrequest中将dont_filter激活为true,以使其起作用