Wil*_*aan 90 python debugging scrapy pycharm python-2.7
我正在使用Python 2.7开发Scrapy 0.20.我发现PyCharm有一个很好的Python调试器.我想用它来测试我的Scrapy蜘蛛.有人知道怎么做吗?
实际上我试图将蜘蛛作为一个脚本运行.结果,我构建了这个脚本.然后,我尝试将我的Scrapy项目添加到PyCharm作为这样的模型:
File->Setting->Project structure->Add content root.
Run Code Online (Sandbox Code Playgroud)
但我不知道还有什么需要做的
Pul*_*lie 160
该scrapy命令是一个python脚本,这意味着你可以从PyCharm内部启动它.
当你检查scrapy binary(which scrapy)时,你会注意到这实际上是一个python脚本:
#!/usr/bin/python
from scrapy.cmdline import execute
execute()
Run Code Online (Sandbox Code Playgroud)
这意味着像这样的命令
scrapy crawl IcecatCrawler也可以像这样执行:python /Library/Python/2.7/site-packages/scrapy/cmdline.py crawl IcecatCrawler
尝试找到scrapy.cmdline包.在我的情况下,位置在这里:/Library/Python/2.7/site-packages/scrapy/cmdline.py
使用该脚本作为脚本在PyCharm中创建运行/调试配置.使用scrapy命令和spider填充脚本参数.在这种情况下crawl IcecatCrawler.
像这样:

将您的断点放在爬行代码中的任何位置,它应该可以工作.
小智 98
你只需要这样做.
在项目的crawler文件夹上创建一个Python文件.我用了main.py.
你的main.py里面放了这个代码.
from scrapy import cmdline
cmdline.execute("scrapy crawl spider".split())
Run Code Online (Sandbox Code Playgroud)
你需要创建一个"运行配置"来运行你的main.py.
这样做,如果你在你的代码上放置一个断点,它就会停在那里.
Rut*_*ijf 15
截至2018.1,这变得容易多了.您现在可以Module name在项目中选择Run/Debug Configuration.设置这scrapy.cmdline和Working directory到scrapy项目(具有的根目录settings.py中的话).
像这样:
现在您可以添加断点来调试代码.
我在使用Python 3.5.0的virtualenv中运行scrapy并设置"script"参数来/path_to_project_env/env/bin/scrapy解决我的问题.
intellij的想法也可以。
创建main.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====================================================')
Run Code Online (Sandbox Code Playgroud)
显示如下:
| 归档时间: |
|
| 查看次数: |
34753 次 |
| 最近记录: |