You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python Scrapy获取商品URL后如何爬取每个链接的商品描述

实现方案

你现在的代码已经可以从列表页提取到商品名称、价格、单位和详情链接,只需要在现有基础上新增详情页请求逻辑,通过Scrapy的Request携带已提取的列表数据,到详情页补全描述字段即可。

import scrapy


class aldi2(scrapy.Spider):
    name = 'aldi2'
    start_urls = ['https://www.aldi.nl/producten/brood-bakkerij/dagvers-brood.html']

    def parse(self, response):
        for products in response.css('div.mod.mod-article-tile.mod-article-tile--default.ct-backwaren'):
            # 先把列表页拿到的字段存在item字典里
            item = {
                'name': products.css('span.mod-article-tile__title::text').get().replace('\n','').replace('\t',''),
                'price': products.css('span.price__wrapper::text').get().replace('\n','').replace('\t',''),
                'unit' : products.css('span.price__unit::text').get().replace('\n',''),
                'link' : products.css('a.mod-article-tile__action').attrib['href']
            }
            # 拼接完整的详情页URL,发起请求,通过meta传item,回调到parse_detail处理详情页
            detail_url = response.urljoin(item['link'])
            yield scrapy.Request(
                url=detail_url,
                callback=self.parse_detail,
                meta={'item': item}
            )
    
    def parse_detail(self, response):
        # 拿到之前传过来的列表页数据
        item = response.meta['item']
        # 这里替换成你站点实际的商品描述CSS选择器即可
        item['description'] = response.css('你要改的描述选择器::text').get().strip()
        # 最后返回完整的所有字段
        yield item

注意事项

  • 代码里parse_detail方法中的CSS选择器需要你自己打开商品详情页,通过F12开发者工具定位到描述对应的元素,替换掉示例里的占位选择器即可
  • 要是站点的详情页描述有多段内容,把get()改成getall()再拼接即可,比如''.join(response.css('xxx::text').getall()).strip()
  • 用response.urljoin()处理链接是为了兼容相对路径的情况,哪怕站点返回的是绝对路径,这个方法也不会报错,通用性更强

内容的提问来源于stack exchange,提问作者Corco1993

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 13:24:04