scrapy爬虫系列:如何使用pycharm调试scrapy程序
发布于 作者:苏南大叔 来源:程序如此灵动~本文描述如何利用pycharm
单步调试 scrapy
的项目代码,方式主要有两种,适用的途径是不一样的。但对于调试
这件事情来说,这两种方案效果都是一致的,有效。
不过对于通过pycharm
运行scrapy
项目来说,这两种方式是有较大差别的。请大家参考本文中的内容。本文不区分mac
还是win
。两种常见的操作环境下,方案都是通用的。
配置项目
不管是方案一,还是方案二。这里都是设置同一个地方,只不过设置的参数不一样罢了。菜单项目是:Run
=>Edit Configurations
。
增加一条python
的配置项目:
以下是需要主要填写的内容,注意里面的python
版本的选择。具体的要填充的内容,请继续看后面的文本。
如果python
版本选择为空的话,还需要设置interpreter
。菜单位置:win下面是settings
,mac下面是prefence
。
如何查找爬虫名称
因为核心命令是:scrapy crawl <name>
,所以,我们需要确定好爬虫的名字。那么,爬虫名是使用scrapy genspider <name>
创建爬虫的时候,就确定好的。但是如果想不起来当时自己是怎么命名的了,也可以到spiders
目录下面,查看对应爬虫代码的name
值即可。
对于核心命令scrapy crawl <name>
的配置,我们有如下两种方案选择。
方案一,执行scrapy
的cmdline
这种方式首先面对的问题是:如何寻找site-packages
这个包的路径的问题,解决方法也非常简单。
pip --version
虽然是查看pip
的版本号,但是会顺带输出site-packages
这个包的路径。
然后苏南大叔在上述site-packages
路径里面寻找scrapy/cmdline.sh
文件,这个就是本方案的主角了。
script path
要填写scrapy/cmdline.sh
的位置。parameters
要填写crawel <你的爬虫名称>
,这个爬虫名称需要按已知方法获取。working directory
填写到项目的根目录即可。其实,再向下一层也是可以的。看大家的习惯了。- 注意查看
interpreter
是否有值。没有值的话,还需要设置添加interpreter
。
方案二,在cmd
中执行scrapy
(推荐)
本段内容的方案,是苏南大叔推荐的方案。当然上一个方案对于调试这件事来说,也是可行的。不过这个方案更好。本方案需要新建个.py
文件,苏南大叔把他放在了项目根目录下面。名字叫做debug.py
。内容如下:
注意替换语句中的baidu
字样为你的实际项目名字。
然后剩余的设置项目和方案一基本类似,只不过script path
换成了上述文件路径,而parameters
是空的,工作目录的设置为代码所在目录即可。具体参考下面的截图:
调试选项设置如下:
开始调试
设置好相关选项之后,就可以调试了。
在pycharm
中,最常用的就是f7
,f8
和f9
这三个键。(当然,有的同学的电脑开启了fn
键,那么就是fn+f7
,fn+f8
和fn+f9
了。)
在被断点后,
f7
是继续执行下一步。(碰见函数,就走到函数里面去)。f8
是继续执行下一步。(就是说走走停停,走一步是一步,看见函数的话,直接走过,不进入函数体)。f9
是继续执行到下一个断点处。(就是继续执行程序,直到再次被断点)。
方案一的不足之处
方案一的情况下,如果点击run spider
的话,就是说不调试,直接执行,就会报错。相关的错误提示信息是:
import http.client
ModuleNotFoundError: No module named 'http.client'
网上给出的解决方案是:要设置调试界面的选项Show command line afterwards
。不过在最新版的pycharm
里,苏南大叔没有找到相关的选项。那么,大家如果喜欢在pycharm
里面run
的话,就还是暂时不要使用方案一了。
那么大家如果有好的思路,可以给苏南大叔留言。
总结
苏南大叔推荐大家使用方案二设置调试,因为这条命令既可以调试,还可以运行。两全其美。方案一如何run的问题,暂时还没有解决。
scrapy
的程序,有异常的时候,报错信息不是很好找。需要大家仔细的观察运行情况及console中的输出。如果发现异常了,要仔细从后往前看日志... 然后就会在某个小角度里面,发现你需要的报错信息的。
更多scrapy
的相关文章,请点击链接查看。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
GOOD