我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

本文描述如何利用pycharm单步调试 scrapy的项目代码,方式主要有两种,适用的途径是不一样的。但对于调试这件事情来说,这两种方案效果都是一致的,有效。

苏南大叔:scrapy爬虫系列:如何使用pycharm调试scrapy程序 - pycharm-scrapy
scrapy爬虫系列:如何使用pycharm调试scrapy程序(图13-1)

不过对于通过pycharm运行scrapy项目来说,这两种方式是有较大差别的。请大家参考本文中的内容。本文不区分mac还是win。两种常见的操作环境下,方案都是通用的。

配置项目

不管是方案一,还是方案二。这里都是设置同一个地方,只不过设置的参数不一样罢了。菜单项目是:Run=>Edit Configurations

苏南大叔:scrapy爬虫系列:如何使用pycharm调试scrapy程序 - configurations
scrapy爬虫系列:如何使用pycharm调试scrapy程序(图13-2)

增加一条python的配置项目:

苏南大叔:scrapy爬虫系列:如何使用pycharm调试scrapy程序 - configurations_2
scrapy爬虫系列:如何使用pycharm调试scrapy程序(图13-3)

以下是需要主要填写的内容,注意里面的python版本的选择。具体的要填充的内容,请继续看后面的文本。

苏南大叔:scrapy爬虫系列:如何使用pycharm调试scrapy程序 - configurations_3
scrapy爬虫系列:如何使用pycharm调试scrapy程序(图13-4)

如果python版本选择为空的话,还需要设置interpreter。菜单位置:win下面是settings,mac下面是prefence

苏南大叔:scrapy爬虫系列:如何使用pycharm调试scrapy程序 - configurations_4
scrapy爬虫系列:如何使用pycharm调试scrapy程序(图13-5)

如何查找爬虫名称

因为核心命令是:scrapy crawl <name>,所以,我们需要确定好爬虫的名字。那么,爬虫名是使用scrapy genspider <name>创建爬虫的时候,就确定好的。但是如果想不起来当时自己是怎么命名的了,也可以到spiders目录下面,查看对应爬虫代码的name值即可。

苏南大叔:scrapy爬虫系列:如何使用pycharm调试scrapy程序 - spider_name
scrapy爬虫系列:如何使用pycharm调试scrapy程序(图13-6)

对于核心命令scrapy crawl <name>的配置,我们有如下两种方案选择。

方案一,执行scrapycmdline

这种方式首先面对的问题是:如何寻找site-packages这个包的路径的问题,解决方法也非常简单。

pip --version

虽然是查看pip的版本号,但是会顺带输出site-packages这个包的路径。

苏南大叔:scrapy爬虫系列:如何使用pycharm调试scrapy程序 - site_packager_path
scrapy爬虫系列:如何使用pycharm调试scrapy程序(图13-7)

然后苏南大叔在上述site-packages路径里面寻找scrapy/cmdline.sh文件,这个就是本方案的主角了。

苏南大叔:scrapy爬虫系列:如何使用pycharm调试scrapy程序 - scrapy_1_debug
scrapy爬虫系列:如何使用pycharm调试scrapy程序(图13-8)

  • script path要填写scrapy/cmdline.sh的位置。
  • parameters要填写crawel <你的爬虫名称>,这个爬虫名称需要按已知方法获取。
  • working directory填写到项目的根目录即可。其实,再向下一层也是可以的。看大家的习惯了。
  • 注意查看interpreter是否有值。没有值的话,还需要设置添加interpreter

苏南大叔:scrapy爬虫系列:如何使用pycharm调试scrapy程序 - scrapy_folder
scrapy爬虫系列:如何使用pycharm调试scrapy程序(图13-9)

方案二,在cmd中执行scrapy(推荐)

本段内容的方案,是苏南大叔推荐的方案。当然上一个方案对于调试这件事来说,也是可行的。不过这个方案更好。本方案需要新建个.py文件,苏南大叔把他放在了项目根目录下面。名字叫做debug.py。内容如下:

newsn.net:这里是【评论】可见内容

注意替换语句中的baidu字样为你的实际项目名字。

然后剩余的设置项目和方案一基本类似,只不过script path换成了上述文件路径,而parameters是空的,工作目录的设置为代码所在目录即可。具体参考下面的截图:

苏南大叔:scrapy爬虫系列:如何使用pycharm调试scrapy程序 - debug_py
scrapy爬虫系列:如何使用pycharm调试scrapy程序(图13-10)

调试选项设置如下:

苏南大叔:scrapy爬虫系列:如何使用pycharm调试scrapy程序 - scrapy_2_debug
scrapy爬虫系列:如何使用pycharm调试scrapy程序(图13-11)

开始调试

设置好相关选项之后,就可以调试了。
pycharm中,最常用的就是f7,f8f9这三个键。(当然,有的同学的电脑开启了fn键,那么就是fn+f7,fn+f8fn+f9了。)

在被断点后,

  • f7是继续执行下一步。(碰见函数,就走到函数里面去)。
  • f8是继续执行下一步。(就是说走走停停,走一步是一步,看见函数的话,直接走过,不进入函数体)。
  • f9是继续执行到下一个断点处。(就是继续执行程序,直到再次被断点)。

苏南大叔:scrapy爬虫系列:如何使用pycharm调试scrapy程序 - start_debug
scrapy爬虫系列:如何使用pycharm调试scrapy程序(图13-12)

方案一的不足之处

方案一的情况下,如果点击run spider的话,就是说不调试,直接执行,就会报错。相关的错误提示信息是:

import http.client
ModuleNotFoundError: No module named 'http.client'

网上给出的解决方案是:要设置调试界面的选项Show command line afterwards。不过在最新版的pycharm里,苏南大叔没有找到相关的选项。那么,大家如果喜欢在pycharm里面run的话,就还是暂时不要使用方案一了。

苏南大叔:scrapy爬虫系列:如何使用pycharm调试scrapy程序 - scrapy_1_run
scrapy爬虫系列:如何使用pycharm调试scrapy程序(图13-13)

那么大家如果有好的思路,可以给苏南大叔留言。

总结

苏南大叔推荐大家使用方案二设置调试,因为这条命令既可以调试,还可以运行。两全其美。方案一如何run的问题,暂时还没有解决。

scrapy的程序,有异常的时候,报错信息不是很好找。需要大家仔细的观察运行情况及console中的输出。如果发现异常了,要仔细从后往前看日志... 然后就会在某个小角度里面,发现你需要的报错信息的。

更多scrapy的相关文章,请点击链接查看。

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   scrapy    pycharm