gpt4 book ai didi

python - Scrapy CrawlSpider : how to access item across different levels of parsing

转载 作者:太空狗 更新时间:2023-10-29 22:23:23 25 4
gpt4 key购买 nike

我正在抓取一个网站(只有两层深度),我想从两层的网站中抓取信息。我遇到的问题是,我想用两个级别的信息填写一个项目的字段。我该怎么做?

我正在考虑将一个项目列表作为一个实例变量,所有线程都可以访问它(因为它是蜘蛛的同一个实例),parse_1 将填写一些字段,parse_2 将必须检查正确的填写相应值之前的键。这种方法看起来很繁琐,我仍然不确定如何使它起作用。

我在想一定有更好的方法,也许可以通过某种方式将项目传递给回调。不过,我不知道如何使用 Request() 方法来做到这一点。想法?

最佳答案

来自 scrapy 文档:

在某些情况下,您可能有兴趣将参数传递给这些回调函数,以便稍后在第二个回调函数中接收参数。您可以为此使用 Request.meta 属性。

下面是一个示例,说明如何使用此机制传递项目,以填充不同页面的不同字段:

def parse_page1(self, response):
item = MyItem()
item['main_url'] = response.url
request = Request("http://www.example.com/some_page.html",
callback=self.parse_page2)
request.meta['item'] = item
return request

def parse_page2(self, response):
item = response.meta['item']
item['other_url'] = response.url
return item

所以,基本上您可以抓取第一页并将所有信息存储在项目中,然后发送整个项目并请求第二级 url 并将所有信息放在一个项目中。

关于python - Scrapy CrawlSpider : how to access item across different levels of parsing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11128596/

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