如何使用 Scrapy 的 meta 在列表页和详情页之间传递数据并保存到同一个 Item 中?

ID:20237 / 打印

如何使用 scrapy 的 meta 在列表页和详情页之间传递数据并保存到同一个 item 中?

如何在 scrapy 中将列表页和详情页内容保存到同一项中

原帖中遇到的问题是,如何将列表页抓取到的标题、时间、url 与详情页抓取到的内容一起存储到一个项目中。

解决办法是利用 scrapy 的 meta 传递参数。meta 是一种字典,可以存储任意数据并将其传递给回调函数。

以下是修改后的代码:

def parse(self, response):     # 获取列表页的标题、时间、URL     titles = response.xpath('//title/text()').extract()     times = response.xpath('//time/text()').extract()     urls = response.xpath('//a/@href').extract()          # 将列表页数据存储在 meta 中     for url in urls:         meta = {'title': titles[0], 'time': times[0]}         yield scrapy.Request(url, callback=self.parse_item, meta=meta)  def parse_item(self, response):     # 从 meta 中获取列表页数据     meta = response.meta          # 获取详情页内容     content = response.xpath('//article/text()').extract()          # 将详情页内容与列表页数据一起创建 Item     item = {         'title': meta['title'],         'time': meta['time'],         'content': content     }     yield item

这样,列表页和详情页的内容就可以在一个 item 中组合在一起了。meta 允许在回调函数之间传递数据,确保所有必要的信息都可用于创建完整的 item。

上一篇: Selenium 获取到的 Cookie 与浏览器查看的不一致,如何解决?
下一篇: 为什么我在cmd环境下运行Python代码时导入pandas包会报错?

作者:admin @ 24资源网   2025-01-14

本站所有软件、源码、文章均有网友提供,如有侵权联系308410122@qq.com

与本文相关文章

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。