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

Scrapy运行报KeyError: spider not found: yahoo错误如何解决?

报错核心原因
  • 启动命令拼写错误:你报错信息中匹配的爬虫名末尾带有多余空格,确认执行的启动命令为scrapy crawl yahoo,不要在yahoo前后加空格,否则无法和你代码中配置的name = "yahoo"匹配。
  • 爬虫文件存放位置错误:Scrapy只能识别存放在项目根目录下spiders文件夹内的爬虫文件,如果你将写好的py文件放在其他路径,会导致爬虫加载失败。
现有代码的其他问题修正

你当前的代码即使解决了爬虫找不到的问题也无法正常爬取数据,需要调整以下内容:

  • 补充BeautifulSoup解析器:初始化BeautifulSoup时必须指定解析器,否则会抛出警告,建议安装lxml解析器后,将代码改为BeautifulSoup(response.body, 'lxml'),lxml安装命令为pip install lxml。
  • 修改节点查找方法:find()方法仅返回第一个匹配的节点,无法直接遍历,要获取所有商品标题需要用find_all()方法,同时要指定标签和类名,正确写法为res.find_all("p", class_="BaseGridItem__title___2HWui")。
  • 调整返回值格式:Scrapy的parse方法不能直接返回BeautifulSoup节点对象,需要提取文本后返回结构化的字典格式。
修正后完整代码
import scrapy
from bs4 import BeautifulSoup

class yahooCrawler(scrapy.Spider):
    name = "yahoo"
    start_urls = ['https://tw.mall.yahoo.com/search/product?p=%E5%B1%88%E8%87%A3%E6%B0%8F']
    def parse(self,response):
        res = BeautifulSoup(response.body, 'lxml')
        for product in res.find_all("p", class_="BaseGridItem__title___2HWui"):
            yield {"商品名称": product.text.strip()}
运行步骤
  1. 将修正后的py文件放入Scrapy项目的spiders文件夹内
  2. 终端进入Scrapy项目根目录(包含scrapy.cfg文件的目录)
  3. 执行启动命令scrapy crawl yahoo,如果需要保存结果到本地可以执行scrapy crawl yahoo -o 商品名称.csv

内容的提问来源于stack exchange,提问作者鄭鼎彥

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 20:06:08