繁体   English   中英

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

[英]Loop on scrapy FormRequest but only one item created

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM