Scrapy爬虫报错AttributeError:AsyncioSelectorReactor无_handleSignals属性求助
解决Scrapy执行
scrapy crawl时的AttributeError: 'AsyncioSelectorReactor' object has no attribute '_handleSignals'错误 这个错误是Scrapy与Twisted版本不兼容导致的:新版本Twisted(22.10+)移除了AsyncioSelectorReactor类的_handleSignals方法,但旧版Scrapy的ossignal.py代码仍在调用该方法。
你的爬虫代码本身没有问题,以下是两种可行的解决方法:
方法一:降级Twisted版本
在虚拟环境中执行以下命令,将Twisted降级到兼容的版本(比如22.8.0):
pip install twisted==22.8.0
降级后重新运行scrapy crawl books即可。
方法二:修改Scrapy的ossignal.py文件
找到报错的ossignal.py文件(路径:C:\Users\Administrator\python\venv\bookscraper\Lib\site-packages\scrapy\utils\ossignal.py),修改install_shutdown_handlers函数:
将原来的:
reactor._handleSignals()
替换为兼容新版本Twisted的逻辑:
# 兼容Twisted新版本的信号处理 if hasattr(reactor, '_handleSignals'): reactor._handleSignals() else: from twisted.internet.base import _SignalHandler _SignalHandler(reactor).handleSignals()
或者更简单的方式,直接注释掉reactor._handleSignals()这一行——后续代码已经手动注册了SIGTERM、SIGINT等信号的处理函数,不影响爬虫核心功能。
修改保存后,重新运行爬虫即可正常执行。
内容的提问来源于stack exchange,提问作者bingru
相关产品推荐
相关产品推荐

