首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从多个进程中合并项

从多个进程中合并项
EN

Stack Overflow用户
提问于 2019-01-11 05:16:35
回答 1查看 812关注 0票数 1

我有个很粗糙的剧本

  1. 在xml文件中查找所有‘页面’节点
  2. 分析所有这些页面,收集数据,查找其他页面。
  3. 还将进一步分析其他页面并收集信息。

刮擦的脚本:

代码语言:javascript
复制
class test_spider(XMLFeedSpider):
 name='test'
 start_urls=['https://www.example.com'] 
 custom_settings={
  'ITEM_PIPELINES':{
   'test.test_pipe': 100,
  },
 }
 itertag='pages'  
 def parse1(self,response,node):
  yield Request('https://www.example.com/'+node.xpath('@id').extract_first()+'/xml-out',callback=self.parse2)
 def parse2(self,response):
  yield{'COLLECT1':response.xpath('/@id').extract_first()} 
  for text in string.split(response.xpath(root+'/node[@id="page"]/text()').extract_first() or '','^'):
   if text is not '':
    yield Request(
     'https://www.example.com/'+text,
     callback=self.parse3,
     dont_filter=True
    )
 def parse3(self,response):
  yield{'COLLECT2':response.xpath('/@id').extract_first()} 
class listings_pipe(object):
 def process_item(self,item,spider):
  pprint(item)

理想的结果将是组合dict项目,例如

{“COLLECT2 1”:“一些数据”,“COLLECT2 2”:“一些数据”,“一些数据”,.}

有办法在每个parse1事件之后调用管道吗?把物品组合在一起?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-11 06:09:58

Parse2方法中,使用meta并使用metacollection1传递给parse3。然后在Parse3中获取您的collection1extract您的collection2并产生您想要的合并结果。

有关元数据的更多信息,请阅读这里

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54140716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档