Scrapyd是什么
Scrapyd是一个基于Python的开源爬虫部署工具,它可以帮助开发者方便地部署、管理和监控Scrapy爬虫。
为什么需要Scrapyd
其实可以不使用Scrapyd工具来部署和管理Scrapy爬虫的,但使用Scrapyd工具可以带来以下好处:
- 简化部署流程:Scrapyd提供了一个统一的部署接口,可以方便地将Scrapy爬虫部署到远程服务器或本地机器上。使用Scrapyd,开发者不需要手动配置爬虫环境、安装依赖项或编写部署脚本,可以快速、准确地部署爬虫。
- 管理爬虫状态:Scrapyd提供了一个Web界面和API接口,可以帮助开发者轻松地管理和监控爬虫的运行状态和日志输出。通过Scrapyd,开发者可以随时启动、停止、暂停、恢复、查询和删除爬虫任务,也可以实时查看和分析爬虫的运行状态和输出结果。
- 方便爬虫调度:Scrapyd提供了一个Web API接口,可以通过HTTP请求来调度和控制Scrapy爬虫的运行。使用Scrapyd,开发者可以轻松地将爬虫任务添加到调度队列中,也可以根据需要调整爬虫运行的参数和选项。
- 支持分布式运行:Scrapyd支持将Scrapy爬虫分布式运行在多个服务器上,以提高爬虫的性能和稳定性。使用Scrapyd,开发者可以轻松地管理和监控分布式爬虫的运行状态和日志输出。
Scrapyd的安装
# 建议提权安装
sudo pip install scrapyd
Scrapyd的配置文件
scrapyd的启动需要配置文件支持。根据官方文档的介绍,会在以下位置中搜索配置文件(优先级降序):
- /etc/scrapyd/scrapyd.conf
- /etc/scrapyd/conf.d/*
- ~/.scrapyd.conf
我这里习惯将配置文件放到/etc/scrapyd/scrapyd.conf
路径下。配置文件如下(更多配置看文章后文档):
[scrapyd]
bind_address = 127.0.0.1
http_port = 6800
username = admin
password = 123456
eggs_dir=/home/xxx/scrapyd/eggs
dbs_dir=/home/xxx/scrapyd/dbs
logs_dir=/home/xxx/scrapyd/logs
建议将egg_dir、dbs_dir、logs_dir等目录设置好,不然这些文件有可能存在根目录下。
Scrapyd的运行
有了配置文件后,在命令行可以直接通过命令运行:
scrapyd
当我们启动服务后,可以通过浏览器访问http://127.0.0.1:6800
来访问scrapyd的web服务。
如果想以daemon守护进程方式来运行的话,可以借助supervisor
等守护进程管理工具。
Scrapyd中的API怎么使用
当我们scrapyd服务启动后,就可以通过请求一些api方式来管理爬虫的状态以及调度爬虫队列。
官方提供通过curl方式来访问api接口,这里我们由于配置文件设置了账户密码,所以在请求的时候需要带上账号密码:
curl -u admin:123456 http://localhost:6800/daemonstatus.json
通过python中的request库来请求:
import requests
url = "http://localhost:6800/daemonstatus.json"
username = "admin"
password = "123456"
response = requests.get(url, auth=(username, password))
print(response.json())
至于有哪些api接口,可以通过官方文档去查看。
如何将Scrapy的项目部署到Scrapyd服务器上
将scrapy项目部署到 Scrapyd 服务器通常包括两个步骤:
- 将项目生成egg这种软件包格式。
- 通过 addversion.json API接口将 egg 软件包上传到 Scrapyd 服务器。
有一个命令工具就能自动化构建 egg 软件包并将其推送到目标 Scrapyd 服务器,这个工具就是scrapyd的客户端Scrapyd-client
。
安装scrapyd的客户端
pip install scrapyd-client
安装scrapyd的客户端后,会提供两个命令工具:scrapyd-deploy
和scrapyd-client
。而这个scrapyd-deploy
命令就是用来部署项目到scrapyd服务器的。
scrapy.cfg配置文件
scrapyd-deploy
命令运行需要一系列的参数,包括scrapyd服务器地址、项目名称等。这里可以通过编写一个配置文件,将参数写入以scrapy.cfg
为名的配置文件中。
[deploy]
url = http://localhost:6800
username = admin
password = 123456
project = projectname
version = 0.0.1
scrapyd-deploy部署项目
在scrapy.cfg
配置文件同级目录下,运行命令:
scrapyd-deploy
如果成功,您应该会看到类似于以下内容的 JSON 响应:
Deploying myproject-1287453519 to http://localhost:6800/addversion.json
Server response (200):
{"status": "ok", "spiders": ["spider1", "spider2"]}
Scrapyd的分布式部署
未完待续~