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

Scrapy shell可正常提取元素但运行爬虫无对应输出如何解决

问题排查

你代码的核心问题出在逻辑结构和Scrapy异步请求的特性不匹配,具体有三个错误:

  1. 回调函数逻辑错误:你把分类详情页的请求回调也设置为parse方法,但parse方法里写的是提取分类列表页.wow.fadeInUp节点的逻辑,分类详情页根本没有这个节点,所以请求返回后什么对应结果都不会输出。
  2. 商品提取逻辑位置完全错误:你写的.web_prolist提取代码紧跟在yield scrapy.Request后面,Scrapy的请求是异步的,这行代码执行的时候请求还没发出去,你拿的还是当前分类列表页的response去提取商品节点,分类列表页根本没有这个节点,当然拿不到任何结果。
  3. 重复请求+没必要的csv读写:你每提取一个分类就读取一次全量分类csv发起请求,11个分类会重复发起121次请求,所以日志里会出现重复请求过滤的提示,而且你刚yield分类数据就去读csv,此时分类数据可能还没写入csv,逻辑完全不通。

修正后代码

你完全不需要用csv中间存储分类,拆分两个解析函数即可:

import scrapy

base_url = 'http://www.cleanman-cn.com/'

class CleanmanSpider(scrapy.Spider):
    name = 'clean'
    start_urls = ['http://www.cleanman-cn.com/productlist.php/']

    def parse(self, response):
        # 专门处理分类列表页,提取分类信息+发起分类详情页请求
        for cat in response.css('.wow.fadeInUp'):
            name = cat.css('a > p::text').get()
            if name is not None:
                name = name.strip()
                link = cat.css('a::attr(href)').get()
                category_url = base_url + link
                # 输出分类信息
                yield {
                    'Categorie' : name,
                    'Url' : category_url
                }
                # 发起分类详情页请求,回调到专门的商品提取函数
                yield scrapy.Request(
                    category_url,
                    callback=self.parse_category,
                    # 可把分类名传下去,后续商品数据可以绑定对应分类
                    cb_kwargs={"category": name}
                )
    
    def parse_category(self, response, category):
        # 专门处理分类详情页,提取商品链接
        master = response.css('.web_prolist')
        for item in master:
            for x in item.css('li'):
                link = x.css('a::attr(href)').get()
                # 输出商品链接,这里已经拼接成完整url
                yield {
                    "category": category,
                    "product_link": base_url + link if link else None
                }

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

相关产品推荐
方舟 Agent Plan

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

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