如何用 PyCharm 调试 scrapy 项目

原理:

首先 scrapy 命令其实就是一个python脚本,你可以使用 which scrapy 查看该脚本的内容:

from scrapy.cmdline import execute

sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
sys.exit(execute())

而命令行运行scrapy项目的方式如下:

scrapy crawl dmoz             #注意,其中的dmoz是项目目录下的spiders目录下的dmoz.py文件里的 name 属性(不是文件里面的类名,也不是文件名前缀),我的工程是: Dmoz/spiders/dmoz.py:

# -*- coding: utf-8 -*-

import scrapy

class DmozSpider(scrapy.Spider):
    name = "dmoz"
    allowed_domains = ["dmoz.org"]
    start_urls = [
        "http://www.kc0011.net/",
        # "http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/"
    ]

    def parse(self, response):
        print(response.text)

 

根据这种运行方式,上面的运行可以用如下命令来代替:

python  /home/hzh/.virtualenvs/env35/lib/python3.5/site-packages/scrapy/cmdline.py  crawl  dmoz

 

下面介绍用pycharm调试scrapy工程:

先用scrapy startproject Dmoz 创建一个scrapy工程,要在pycharm里调试该Dmoz工程:

1、先用pycharm直接打开Dmoz目录,这样就将该目录转换成了pycharm工程(其实就是创建了一个.idea目录)

2、在项目的Run/Debug Configuration里设置:

script:     /home/hzh/.virtualenvs/env35/lib/python3.5/site-packages/scrapy/cmdline.py

script parameters:   crawl dmoz

working directory:        /home/hzh/delll/scrapy/Dmoz

然后勾选:    Show command line afterwards 选项

 

这样就可以调试了。

 

 

 

还有一种通用的调试方法,无论什么项目,只要能命令行运行,就能用这种方法来调试:

命令行在什么目录里执行,就在这个目录里新建一个main-pycharm.py文件,内容就是你执行的命令行,如运行scrapy就这么写:

from scrapy import cmdline    
cmdline.execute("scrapy crawl you-spider-name".split())

然后配置让pycharm执行这个普通的main-pycharm.py文件就可以了。

 

posted @ 2017-07-24 20:56  微信公众号--共鸣圈  阅读(424)  评论(0编辑  收藏  举报