gpt4 book ai didi

python - 来自同一页面中多个链接的同一项目中的scrapy数据?

转载 作者:行者123 更新时间:2023-11-30 22:56:34 26 4
gpt4 key购买 nike

如何使用 scrapy 数据从同一页面中的多个链接解析到同一项目?我不想仅保存子页面链接的数据,而是相当于 this 的数据例如,但不同之处在于我想关注同一页面上的多个链接:

A
----> B.1
--------> B.1.1
----> B.2
--------> B.2.2

综上所述,我想在根页面A、B.1、B.1.1、B.2和B.2.2的同一项目中保存不同类型的数据。有人能给我一个玩具示例吗?

编辑:

对以下代码进行成像:

class MySpider(BaseSpider):

start_urls = [www.pageA.com]

def parse(self, response):
myitem = Item()

# some initial data
item['a'] = response.xpath(...).extract()

# extract all B.i links
url_Bi_list = response.xpath(...).extract()

for url_Bi in url_Bi_list:
yield Request(url_Bi,
...
callback=parseBi,meta=dict(item=myitem))

def parseBi(self, response):
my_new_item = response.meta['item']


# some second data
item['bi'] = response.xpath(...).extract()

# extract B.i.i link
url_Bii = response.xpath(...).extract()

yield Request(url_Bii,
...
callback=parseBii,meta=dict(item=my_new_item))

def parseBii(self, response):
final_item = response.meta['item']

# extract more data from B.i.i link
# some third inner data
my_new_item['bii'] = response.xpath(...).extract()

yield final_item

那么,这个代码结构可以工作吗?我不确定何时产出元素或请求...

最佳答案

要查询多个页面,请使用示例 you just pointed (控制回调),并使用meta parameter要以 dict 形式在回调之间传递信息,请将一个项目传递给每个回调,以便稍后在最后一个回调中返回它。

def parseA(self, response):
...
myitem = MyItem()
# populate the item
...
yield Request(url=<B url>,
...
callback=parseB, meta=dict(item=myitem))

def parseB(self, response):
my_new_item = response.meta['item']
...
yield Request(url=<C url>,
...
callback=parseC, meta=dict(item=my_new_item))

def parseC(self, response):
final_item = response.meta['item']
...
yield final_item

关于python - 来自同一页面中多个链接的同一项目中的scrapy数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36947822/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com