我有个很粗糙的剧本
刮擦的脚本:
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事件之后调用管道吗?把物品组合在一起?
发布于 2019-01-11 06:09:58
在Parse2方法中,使用meta并使用meta将collection1传递给parse3。然后在Parse3中获取您的collection1,extract您的collection2并产生您想要的合并结果。
有关元数据的更多信息,请阅读这里。
https://stackoverflow.com/questions/54140716
复制相似问题