Scrapy爬虫生产环境部署完整指南:Scrapyd与ScrapydWeb实战
本文详细介绍Scrapy爬虫在生产环境中的服务器部署方案,涵盖Scrapyd服务端、ScrapydClient客户端及ScrapydWeb可视化管理工具的安装与配置。通过具体命令演示项目上传、爬虫启动及参数传递,并结合实际爬取数据展示部署效果与常见问题分析,帮助开发者实现高效、可视化的爬虫集群管理。
一、Scrapy爬虫部署服务器
Scrapy通过命令行运行通常仅适用于测试环境,而在生产环境中,为了进行远程管理和稳定运行,通常需要将爬虫部署到服务器上。
实现Scrapy服务器部署有一套完整的开源解决方案,即由Scrapy核心框架、Scrapyd服务端、ScrapydClient客户端以及ScrapydWeb可视化管理界面共同组成。
1、Scrapyd
1.介绍
Scrapyd是一个用于部署和运行Scrapy爬虫的应用程序,它提供了JSON API接口,允许用户部署(上传)项目并控制爬虫的运行状态。
它是目前解决分布式爬虫部署问题的最佳方案之一。
官方文档地址:https://scrapyd.readthedocs.io/
2.安装
pip install scrapyd在安装过程中可能会遇到大量错误,主要原因通常是缺少依赖包。因此,安装前需确保Scrapy已成功安装,并耐心安装所有缺失的依赖包即可解决大部分问题。
打开命令行,输入命令scrapyd启动服务,如下图所示:

启动后,在浏览器中访问 http://127.0.0.1:6800/ 即可看到Scrapyd的管理界面。

2、Scrapyd-Client
1.介绍:
Scrapyd-Client允许将本地的Scrapy项目打包并发送到运行中的Scrapyd服务端(前提是服务器端的Scrapyd服务已正常运行)。
官方文档地址:https://pypi.org/project/scrapyd-client/
2.安装
pip install scrapy-client与Scrapyd类似,安装过程中可能会遇到各种错误,主要也是依赖包缺失问题,需耐心安装所有依赖。
3、ScrapydWeb(可选)
1.介绍
ScrapydWeb是一个用于Scrapyd集群管理的Web应用程序,支持Scrapy日志的分析和可视化展示。
官方文档地址:https://pypi.org/project/scrapydweb/
2.安装
pip install scrapyd在保持Scrapyd服务运行的情况下,打开新的命令行窗口运行命令scrapydweb,即需要同时打开两个命令行窗口。
运行命令scrapydweb后,首次启动会在当前目录下生成配置文件“scrapydweb_settings_v*.py”。
更改配置文件:编辑该配置文件,将ENABLE_LOGPARSER的值更改为False。
添加访问权限
SCRAPYD_SERVERS = [
'127.0.0.1:6800',
# 'username:password@localhost:6801#group',
('username', 'password', 'localhost', '6801', 'group'),
]
配置HTTP基本认证,在配置文件中设置ENABLE_AUTH = True,并指定USERNAME和PASSWORD。
ENABLE_AUTH = True
USERNAME = 'username'
PASSWORD = 'password'
配置完成后,在浏览器中访问 http://127.0.0.1:5000/1/servers/ 即可进入管理界面。

二、实际操作(所有操作均在Scrapyd启动的前提下进行)
1.上传爬虫

编辑scrapy.cfg文件,其中的url参数指定Scrapyd服务器的位置,由于Scrapyd运行在本地,因此设置为localhost。
注意:执行后续操作前,需切换到与scrapy.cfg文件同级目录下。
scrapyd-deploy
上图表示运行成功!

上述文件夹是成功后自动创建的(之前的截图中存在是因为之前已进行过测试)。
然后输入以下命令将项目上传至服务器。
scrapyd-deploy demo -p qcjob结构:scrapyd-deploy -p <目标> -p <项目>(即 scrapyd-deploy <target> -p <project>)
运行成功的截图如下。

2.启动爬虫
在cmd中输入命令(示例为爬取一天内关于java的职业需求)。
curl http://localhost:6800/schedule.json -d project=qcjob -d spider=job -d key = java time=0我编写的爬虫可以根据用户输入的参数来爬取数据。
key=表示关键字(默认是全部)
time=表示时间(0=24小时,1=3天内,2=一周内,3=一个月内,默认为0)
当然Scrapyd的强大之处在于可以用http方式控制爬虫。
http://localhost:6800/schedule.json?project=qcjob&spider=job&key=java&time=0 #POST以下是用Postman进行模拟post请求。

然后进入 http://127.0.0.1:6800/。
点击job,就可以查看爬虫是否运行,和运行时间。

从图可以看出,这个爬虫运行了9分31秒。
当然我们也可以从ScrapydWeb中查看和管理爬虫,浏览器访问:http://127.0.0.1:5000/1/servers/。

我们可以通过可视化界面来控制爬虫运行,Scrapyd可以启动多个不同的爬虫,一个爬虫的多个版本启动。是目前分布式爬虫的最好解决方法!!!
三、数据展示
本次爬取花费9分31秒,共爬去25,000余条数据,爬虫速度开至每秒8次访问,以他该服务器的最大访问量。
其中部分数据存在有误,为了保证速度,没有进行过多的筛取和排查,错误率保持较低水平。


四、问题与思考
- 通过爬去可以看得出,如果采用单一的爬虫的话,爬取速度还是比较慢的,如果采用多个爬虫,分布式爬取的话,就存在数据是否重复以及数据的共用问题。
- 如果采用分布式爬虫的话,就涉及到ip代理,因为一台机器如果大量访问的话经过测试会导致浏览器访问,该网页都无法打开,如果设置IP代理,就需要大量的代理IP。
- 虽然爬虫已经部署在服务器上,但是还是无法做到,通过用户输入关键字时间等地址等多个参数进行爬取数据,无法做到实时展示,只能先运行爬虫,爬取大量数据储存与数据库,然后才能进行分析,做出图表。
- 关于数据的统计与展示,单一的sql语句,很难满足其对大量数据的分析,可能需要用Python的数据分析库,对数据进行处理,然后才能展示。
五、收获
已经可以通过http请求的方式来控制爬虫的启动停止,以及传递参数,就等于scrapy爬虫是可以集成于web应用里面的。
到此这篇关于scrapy爬虫部署服务器的方法步骤的文章就介绍到这了,更多相关scrapy爬虫部署服务器内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













