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

Win10 VSCode调试Scrapy Splash爬虫出现ReactorNotRestartable及导入错误

问题1:ReactorNotRestartable报错原因
  • 错误触发原因:你原有配置中launch.json使用scrapy runspider命令执行runner.py,而runner.py内部又调用了scrapy.cmdline.execute再次启动爬虫,等于连续两次触发Twisted reactor启动逻辑,而Twisted的reactor不允许重启,因此抛出该异常。
  • 配置冗余问题:runner.py和launch.json的功能重复,二者保留一个即可,无需同时使用。
问题2:删除runner.py后相对导入报错解决方案

报错原因:scrapy runspider是单文件运行模式,不会识别整个Scrapy项目的包层级结构,因此from ..myitems import RentalItem这种相对导入语法无法识别父包。

最优解决方案:修改launch.json配置,和命令行运行逻辑对齐

直接把launch配置改成执行标准scrapy crawl命令,自动加载项目完整结构,无需修改爬虫代码:

{
    "version": "0.1.0",
    "configurations": [
        {
            "name": "Python: Launch Scrapy Spider",
            "type": "python",
            "request": "launch",
            "module": "scrapy",
            "args": [
                "crawl",
                "mytest",
                "-o",
                "out.json"
            ],
            "cwd": "C:\\scrapy\\hw_spiders",
            "console": "integratedTerminal"
        }
    ]
}

修改后无需打开mytest.py再启动,直接按F5就会以项目根目录为工作目录执行爬虫,相对导入会正常生效,和你命令行直接跑scrapy crawl mytest -o out.json的逻辑完全一致。

可选方案:如果你坚持使用runspider

  1. 把mytest.py中的相对导入改成绝对导入:
# 把 from ..myitems import CarItem 改成
from hw_spiders.myitems import RentalItem
  1. 在launch.json中添加PYTHONPATH环境变量配置,确保项目根目录被Python识别:
"env": {"PYTHONPATH": "C:\\scrapy\\hw_spiders"}

额外代码问题提示

你的mytest.py中导入的是CarItem,但parse_object方法里实例化的是RentalItem,注意保持类名一致,避免后续运行报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 04:15:03