运行Scrapy爬虫代码报ModuleNotFoundError: No module named 'stack'如何解决
错误产生原因
该报错是Python导入模块时未找到对应stack包导致的,核心原因可分为两类:
- 未按照Scrapy标准流程创建项目,直接单独运行当前爬虫文件,Python无法定位到存放
items.py的stack项目目录 - 运行爬虫时的工作目录错误,没有在Scrapy项目根目录下执行启动命令,Python的模块搜索路径未包含
stack包的所在路径
解决步骤
- 如果你还没有创建Scrapy项目,先执行项目初始化命令:
scrapy startproject stack
执行后会自动生成标准的Scrapy项目结构,如下所示:
stack/ ├── stack/ │ ├── __init__.py │ ├── items.py │ ├── middlewares.py │ ├── pipelines.py │ ├── settings.py │ └── spiders/ │ ├── __init__.py │ └── 你当前的爬虫代码文件(可自定义命名,比如stack_spider.py) └── scrapy.cfg
- 打开生成的
stack/items.py文件,补充StackItem类的定义:
import scrapy class StackItem(scrapy.Item): title = scrapy.Field() url = scrapy.Field()
- 将你编写的爬虫代码文件移动到
stack/stack/spiders/目录下 - 切换工作目录到外层的stack项目根目录(即包含
scrapy.cfg文件的目录),执行爬虫启动命令即可正常运行:
scrapy crawl stack
命令中的stack对应你爬虫代码中定义的name属性值。
内容的提问来源于stack exchange,提问作者Md.Abdul Kader
相关产品推荐
相关产品推荐

