最近在研究Scrapy Cluster框架,发现网上的用VS Code调试开发Scrapy Cluster教程很少。由于Scrapy Cluster是一个分布式的数据爬虫框架,所以本地单步调试比较困难。因此作此文详细记录本地配置及调试过程。如果之前没有接触过Scrapy Cluster,建议先参考《Scrapy Cluster新手教程》。如果读者朋友们是使用PyCharm作为开发工具的,可以参考《使用PyCharm调试开发Scrapy Cluster》。本文介绍的Scrapy Cluster版本为1.2.1,Python版本为2.7。下面,我将为大家介绍和演示如何使用VS Code调试开发Scrapy Cluster爬虫。
Scrapy Cluster本地开发配置
此部分内容基本上可以参考《Scrapy Cluster新手教程》。需要注意的是,在验证Kafka是否可以连接时,
python kafkadump.py list
可能会出现如下错误:
[kafkadump] ERROR: An exception ‘KafkaUnavailableError’ occured. Arguments:
(“All servers failed to process request: [(‘test’, 9092, 0)]”,)
这是由于系统中没有配置主机名test对应的IP地址。只需要配置系统的Hosts文件时加入对应的test主机的IP地址即可。
在VS Code中开发Scrapy Cluster爬虫
使用VS Code开发Scrapy Cluster爬虫项目,需要选对合适的工作目录。由于Scrapy Cluster项目由多个模块Kafka Monitor,Redis Monitor和Crawler构成。因此我们要使用Scrapy Cluster的根目录作为工作目录。
设置正确的工作目录
例如,在本地电脑上我们把Scrapy-Cluster解压安装在以下目录中:
D:\projects\scrapy-cluster
使用VS Code打开项目时,需要把根目录设置在以上路径中。在文件浏览窗口我们可以看到以下内容:
开发爬虫代码
在Scrapy Cluster中,爬虫程序代码是放在crawler文件夹中的。因此,如果你已经有现成的Crawler代码,或者要创建新的爬虫代码,都需要在crawler文件夹中开发。因为我们使用的Git版本管理系统,只上传我们自己创建的代码,不上传Scrapy Cluster的系统代码;所以,我们的做法是把代码库中的对应文件夹crawler, kafka-monitor和redis-monitor都拷贝过来。
注意:覆盖以后要确保对应三个文件夹中的localsettings.py
配置为本地版本,否则可能会报以下错误:
Unhandled error in Deferred:
2019-07-05 16:27:58 [twisted] CRITICAL: Unhandled error in Deferred:
Unhandled Error
……
sys.exit(1)
exceptions.SystemExit: 1
创建Debug入口文件
Scrapy Cluster的Python文件不是直接启动的,是需要命令行启动的。因此,在VS Code中需要创建一个启动Scrapy Cluster爬虫的脚本,然后调试时需要通过这个脚本启动爬虫程序。首先,大家需要注意的是debug.py这个文件,必须创建在以下目录,如果目录错了,就会启动失败。
D:\projects\scrapy-cluster\crawler
以下是样例代码:
from scrapy.cmdline import execute import os os.environ["XDG_CONFIG_HOME"] = "D:\scrapy-cluster\crawler" #绝对路径 execute([ 'scrapy', 'runspider', "crawling\spiders\my_spider.py" ])
以上代码在执行调试时会启动my_spider.py
代码,我们就可以在该文件中设置断点调试了。执行以上代码,如果在终端显示以下信息则表示启动成功了:
2019-07-08 10:39:29,170 [sc-crawler] INFO: Changed Public IP: None -> b’43.254.105.235′
如果大家对Scrapy Cluster感兴趣,可以关注以下微信号与爱好者们一起讨论相关话题。
扫码联系船长