如何控制Scrapy中的产量顺序

如何控制Scrapy中的产量顺序,第1张

概述救命!阅读以下scrapy代码和crawler的结果.我想从 http://china.fathom.info/data/data.json抓取一些数据,只允许Scrapy.但我不知道如何控制产量顺序.我期待在循环中处理所有parse_member请求然后返回group_item,但似乎yield产品总是在yield请求之前执行. start_urls = [ "http://china 救命!阅读以下scrapy代码和crawler的结果.我想从 http://china.fathom.info/data/data.json抓取一些数据,只允许Scrapy.但我不知道如何控制产量的顺序.我期待在循环中处理所有parse_member请求然后返回group_item,但似乎yIEld产品总是在yIEld请求之前执行.

start_urls = [    "http://china.fathom.info/data/data.Json"]def parse(self,response):    groups = Json.loads(response.body)['group_members']    for i in groups:        group_item = GroupItem()        group_item['name'] = groups[i]['name']        group_item['chinese'] = groups[i]['chinese']        group_item['members'] = []        members = groups[i]['members']        for member in members:            yIEld Request(self.person_url % member['ID'],Meta={'group_item': group_item,'member': member},callback=self.parse_member,priority=100)        yIEld group_itemdef parse_member(self,response):    group_item = response.Meta['group_item']    member = response.Meta['member']    person = Json.loads(response.body)    ego = person['ego']    group_item['members'].append({        'ID': ego['ID'],'name': ego['name'],'chinese': ego['chinese'],'role': member['role']    })

Data on MongoDB

解决方法 你需要在最终回调中产生项目,解析不会停止parse_member完成,所以解析中的group_item在parse_member工作时没有改变.

不要产生parse_item,只是parse_member上的那个,因为你已经在Meta上复制了上一个项目,并且你已经使用response.Meta [‘group_item’]在parse_member上恢复了它

总结

以上是内存溢出为你收集整理的如何控制Scrapy中的产量顺序全部内容,希望文章能够帮你解决如何控制Scrapy中的产量顺序所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1197459.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存