如何使用PyCharm来debuggingScrapy项目
我正在Python 2.7中使用Scrapy 0.20。 我发现PyCharm有一个很好的Pythondebugging器。 我想testing我的Scrapy蜘蛛使用它。 任何人都知道该怎么做?
我曾经尝试过
其实我试图把蜘蛛作为脚本来运行。 结果,我build立了这个脚本。 然后,我尝试将我的Scrapy项目添加到PyCharm中,像这样:
File->Setting->Project structure->Add content root.
但我不知道我还有什么要做的
scrapy
命令是一个python脚本,这意味着你可以从PyCharm里面启动它。
当您检查scrapy二进制文件( which scrapy
)时,您会注意到这实际上是一个python脚本:
#!/usr/bin/python from scrapy.cmdline import execute execute()
这意味着scrapy crawl IcecatCrawler
的命令也可以像这样执行: python /Library/Python/2.7/site-packages/scrapy/cmdline.py crawl IcecatCrawler
试着findscrapy.cmdline包。 在我的情况下,位置在这里: /Library/Python/2.7/site-packages/scrapy/cmdline.py
在脚本中使用该脚本在PyCharm中创build一个运行/debuggingconfiguration。 用scrapy命令和蜘蛛填充脚本参数。 在这种情况下, crawl IcecatCrawler
。
喜欢这个:
把你的断点放在你的抓取代码中的任何地方,它应该工作。
你只需要这样做。
在您的项目的履带文件夹上创build一个Python文件。 我用main.py.
- 项目
- 履带
- 履带
- 蜘蛛
- …
- main.py
- scrapy.cfg
- 履带
- 履带
在你的main.py里面放这个代码。
from scrapy import cmdline cmdline.execute("scrapy crawl spider".split())
而且你需要创build一个“运行configuration”来运行你的main.py。
这样做,如果你在你的代码中放置一个断点,它将停在那里。
我在Python 3.5.0的virtualenv中运行scrapy,并将“script”参数设置为/path_to_project_env/env/bin/scrapy
,为我解决了这个问题。
为了给接受的答案增加一点点,经过近一个小时,我发现我必须从下拉列表(靠近图标工具栏的中心)select正确的运行configuration,然后点击debuggingbutton才能使其工作。 希望这可以帮助!
我也使用PyCharm,但我没有使用它的内置debuggingfunction。
为了debugging我正在使用ipdb
。 我设置了一个键盘快捷方式来插入import ipdb; ipdb.set_trace()
import ipdb; ipdb.set_trace()
在任何一行我想断点发生。
然后我可以键入n
来执行下一个语句, s
进入一个函数,键入任何对象的名称来查看它的值,改变执行环境,键入c
继续执行…
这是非常灵活的,在PyCharm以外的环境中工作,在那里你不控制执行环境。
只需input您的虚拟环境pip install ipdb
并将import ipdb; ipdb.set_trace()
import ipdb; ipdb.set_trace()
在您希望执行暂停的行上。
intellij的想法也工作。
创buildmain.py :
#!/usr/bin/env python # -*- coding: utf-8 -*- #coding=utf-8 import sys from scrapy import cmdline def main(name): if name: cmdline.execute(name.split()) if __name__ == '__main__': print('[*] beginning main thread') name = "scrapy crawl stack" #name = "scrapy crawl spa" main(name) print('[*] main thread exited') print('main stop====================================================')
如下所示: