原理:
首先 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 选项
这样就可以调试了。