Visual Studio 2019调试Scrapy项目时断点无法命中问题求助
解决Visual Studio 2019调试Scrapy断点不生效问题
- 修正启动入口配置
不要直接通过scrapy crawl命令行启动爬虫,在项目根目录新建独立启动脚本run_spider.py,内容如下,替换对应爬虫模块和类名即可:
之后将VS2019的启动文件设置为该from scrapy.crawler import CrawlerProcess from scrapy.utils.project import get_project_settings # 替换为你实际的爬虫导入路径 from myproject.spiders.my_spider import MySpider if __name__ == '__main__': process = CrawlerProcess(get_project_settings()) # 替换为你实际的爬虫类名 process.crawl(MySpider) process.start()run_spider.py,确保调试器直接挂载到爬虫运行的主进程。 - 关闭Scrapy并发异步配置
Scrapy默认多并发异步执行会导致调试器无法捕获子进程断点,修改项目settings.py添加以下配置,强制单线程同步运行:# 禁用并发 CONCURRENT_REQUESTS = 1 REACTOR_THREADPOOL_MAXSIZE = 1 # 改用同步reactor TWISTED_REACTOR = 'twisted.internet.selectreactor.SelectReactor' # 关闭自动限速 AUTOTHROTTLE_ENABLED = False - 修复print无输出问题
Scrapy默认会接管标准输出流,修改settings.py添加以下配置,确保输出正常显示:
如仍无输出,可将LOG_LEVEL = "DEBUG" # 禁止Scrapy重定向stdout LOG_STDOUT = Falseprint替换为Scrapy自带的日志输出方法:self.logger.debug("输出内容")。 - 调整断点位置
不要将断点打在def parse(self, response):函数定义行,需打在函数内部第一行可执行代码处,避免Python调试器版本兼容问题导致断点失效。
内容的提问来源于stack exchange,提问作者Columbo
相关产品推荐
相关产品推荐

