python: 3.6
pycharm: 4.5.5
scrapy: 1.3.2
学习 scrapy
是发现调试和以往不同,无法像普通python项目一样,通过设置断点,调试启动,然后在断点处停止,开始调试。
scrapy
是通过 scrapy 的解释器 scrapy.exe
完成,所以官方教程中提供的执行命令: scrapy crawl quotes -o quotes.json
。
打开pycharm工程调试配置界面(Run -> Edit Configurations)。
quotes_spider
,官方文档提供的示例工程。H:\Python\Python36\Lib\site-packages\scrapy\cmdline.py
, cmdline.py
是 scrapy
提供的命令行调用脚本,此处将启动脚本设置为 cmdline.py
,将需要调试的工程作为参数传递给此脚本。crawl quotes -o quotes.jl
,参数命令参照官方文档提供的爬虫执行命令:scrapy crawl quotes -o quotes.json
,与之不同的是设置参数时不包含 scrapy
。H:\work\python\myscrapy\tutorial
,根目录下包含爬虫配置文件 scrapy.cfg
。配置如下图:
配置完成后,在 parse
函数处设置断点,调试运行配置好的工程,断点命中,并在控制台输出调试信息。
调试运行,断点并未命中,控制台输出信息如下:
H:\Python\Python36\python.exe "H:\Program Files (x86)\JetBrains\PyCharm Community Edition 4.5.4\helpers\pydev\pydevd.py" --multiproc --client 127.0.0.1 --port 59810 --file H:/Python/Python36/Lib/site-packages/scrapy/cmdline.py crawl quotes -o quotes.jl
pydev debugger: process 4740 is connecting
Connected to pydev debugger (build 141.3058)
Scrapy 1.3.2 - no active project
Unknown command: crawl
Use "scrapy" to see available commands
Process finished with exit code 2
工作目录设置有误,造成无法识别 scrapy 命令,按照上文所说,将工作目录设置为包含 scrapy.cfg
,重新运行,问题解决。