爬虫集群管理 Scrapyd + Gerapy Demo

scrpyd 安装使用

scrapyd 官方文档

GitHub:https://github.com/djm/python-scrapyd-api

Scrapyd,GitHub:https://github.com/scrapy/scrapyd

scrapyd 是由scrapy 官方提供的爬虫管理工具,可以非常方便地上传、控制爬虫并且查看运行日志。它提供一个JSON web service 监听的请求,我们可以从任何一台可以连接到服务器的电脑发送请求安排爬虫运行,或者停止正在运行的爬虫。甚至,我们可以使用它提供的API上传新爬虫而不必登录到服务器上进行操作。

ps: 注意是事项见文尾,及常见错误解决办法

ps: 如果想实现 爬虫定时调度,可以调用Gerapy API  结合liunx crontab 或者其他定时任务工具,也可以结合shell 

ps 进行日志的存储  同样可以调用API,或在scrapy settings 设置

ps:分布式爬虫 也可在scrapy中写shell统一shell调度, push url_key 进入 redis 后 shell  分批次执行 

scrapy crawl spidername      > /home/admin/xxx/log/crawler.log 2>&1
scrapy crawl spidername2     > /home/admin/xxx/log/crawler.log 2>&1
scrapy crawl spidername3  > /home/admin/xxxx/log/crawler.log 2>&1

安装 Scrapyd

pip install scrapyd

默认情况下scrapyd 监听 0.0.0.0:6800 端口,运行scrapyd 后在浏览器http://localhost:6800/ 即可查看到当前可以运行的项目:

运行scrapyd 服务

直接运行命令scrapyd:

scrapyd

ps :如果运行scrapyd出现错误 -bash scrapyd command not found  找到python  安装目录  ln -s /usr/local/python3/bin/scrapyd   /usr/bin/scrapyd

运行scrapyd  并在浏览器中打开

 部署scrapy 项目

使用scrapyd-client提供的scrapyd-deploy工具.

pip install scrapyd-client

修改工程目录下的 scrapy.cfg 文件 

# Automatically created by: scrapy startproject
#
# For more information about the [deploy] section see:
# https://scrapyd.readthedocs.io/en/latest/deploy.html

[settings]
default = movie_heaven.settings

[deploy:movie_heaven_deploy]

url = http://127.0.0.1:6800/
project = movie_heaven

部署项目 并启动爬虫

# 部署项目到服务器
scrapyd-deploy movie_heaven_deploy -p movie_heaven

# 查看部署方式
scrapy list
scrapyd-deploy -l

#启动爬虫 我这里有两个爬虫,你或许少或许会更多
# curl http://127.0.0.1:6800/schedule.json -d project=movie_heaven -d spider=dyttspider -d spider=6spider
#列出爬虫
# curl http://localhost:6800/listspiders.json?project=movie_heaven

# 暂定爬虫  根据scrapyd中每个爬虫运行产生的job id
curl http://localhost:6800/cancel.json -d project=movie_heaven -d job=94bdxxxxxxxxxxxxxx9bafd


log 信息

(develop_py3) yangshilongdeMacBook-Pro:spiders ysl$ scrapyd-deploy movie_heaven_deploy -p movie_heaven
Packing version 1557366747
Deploying to project "movie_heaven" in http://127.0.0.1:6800/addversion.json
Server response (200):
{"node_name": "yangshilongdeMacBook-Pro.local", "status": "ok", "project": "movie_heaven", "version": "1557366747", "spiders": 2}

(develop_py3) yangshilongdeMacBook-Pro:spiders ysl$ curl http://127.0.0.1:6800/schedule.json -d project=movie_heaven -d spider=dyttspider -d spider=6spider
{"node_name": "yangshilongdeMacBook-Pro.local", "status": "ok", "jobid": "2797a4ba71fd11e9aaeff2189896df11"}
(develop_py3) yangshilongdeMacBook-Pro:spiders ysl$ 


ps: 如报错 builtins.AttributeError: 'int' object has no attribute 'splitlines'   >>> 进行版本回退  Scrapy==1.6.0 Twisted==18.9.0

https://files.pythonhosted.org/packages/5d/0e/a72d85a55761c2c3ff1cb968143a2fd5f360220779ed90e0fadf4106d4f2/Twisted-18.9.0.tar.bz2

我们还可以使用api 去访问 ,返回一个包含各个spider运行的情况,包括运行完成的正在运行的,job id等

Scrapyd-API  GitHub:https://github.com/djm/python-scrapyd-api

from scrapyd_api import ScrapydAPI
scrapyd = ScrapydAPI('http://127.0.0.1:6800')
print(scrapyd.list_jobs('project_name'))

# ------
返回一个包含各个spider运行的情况,包括运行完成的正在运行的,job id等信息的 dict
{
    xxx:xxx
}

 到这里scrapyd的部署就完成了,我们可以在scrapyd 查看任务进程 日志信息,运行和启动时间,对爬虫进行管理

Gerapy

Gerapy 是一款分布式爬虫管理框架,支持 Python 3,基于 Scrapy、Scrapyd、Scrapyd-Client、Scrapy-Redis、Scrapyd-API、Scrapy-Splash 开发   GitHub:https://github.com/Gerapy/Gerapy

安装

$ pip3 install gerapy

执行完毕之后,本地便会生成一个名字为 gerapy 的文件夹,接着进入该文件夹,可以看到有一个 projects 文件夹,我们后面会用到这个文件。紧接着执行数据库初始化命令:

cd gerapy
gerapy migrate

这样它就会在 gerapy 目录下生成一个 SQLite 数据库,同时建立数据库表。

接着我们只需要再运行命令启动服务

gerapy runserver
(develop_py3) yangshilongdeMacBook-Pro:spiders ysl$ gerapy runserver
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).
May 09, 2019 - 09:54:27
Django version 2.2.1, using settings 'gerapy.server.server.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

秦东完毕后 我们在浏览器中打开 http://localhost:8000/,就可以看到 Gerapy 的主界面

可以在主机管理界面编辑添加我们需要的机器 例如 我添加一台华为云机器

在调度界面 进行爬虫尽心监控 

 

 这里我们可以自由地配置、编辑、部署我们的 Scrapy 项目,点击左侧的 Projects ,即项目管理选项

 假设现在我们有一个新的 Scrapy 项目,如果我们想要进行管理和部署,还记得初始化过程中提到的 projects 文件夹吗?这时我们只需要将项目拖动到刚才 gerapy 运行目录的 projects 文件夹下,(如果旧的项目增加了新的spider,重新挂载部署项目即可,忽略此步操作)

这时刷新页面,我们便可以看到 Gerapy 检测到了这个项目,同时它是不可配置、没有打包的 

这时我们可以点击部署按钮进行打包和部署,在右下角我们可以输入打包时的描述信息,类似于 Git 的 commit 信息,然后点击打包按钮,即可发现 Gerapy 会提示打包成功,同时在左侧显示打包的结果和打包名称

 

打包成功之后,我们便可以进行部署了,我们可以选择需要部署的主机,点击后方的部署按钮进行部署,同时也可以批量选择主机进行部署

 另外Gerapy 还支持 编写爬虫的功能, GitHub:https://github.com/Gerapy/Gerapy。 

常见问题:

scrapy 启动报错
ps: 如报错 builtins.AttributeError: 'int' object has no attribute 'splitlines'   >>> 进行版本回退  Scrapy==1.6.0 Twisted==18.9.0
wget https://files.pythonhosted.org/packages/5d/0e/a72d85a55761c2c3ff1cb968143a2fd5f360220779ed90e0fadf4106d4f2/Twisted-18.9.0.tar.bz2
cd Twisted-xxx.tar.bz2
tar -xjvf Twisted-xxx.tar.bz2
python3 setup.py install

项目部署时 报错
(develop_py3) yangshilongdeMacBook-Pro:spiders ysl$ scrapyd-deploy movie_heaven_deploy -p movie_heaven
Packing version 1557390952
Deploying to project "movie_heaven" in http://114.116.125.244:6800/addversion.json
Deploy failed: <urlopen error [Errno 61] Connection refused>
服务器安装完成scrapyd 后
scrapyd 安装在 /xx/xxx/xxxx/python3.x/site-packages/scrapyd
配置文件: default_scrapyd.conf
参数 bind_address 默认是 127.0.0.1 表示只允许本机访问
修改为 0.0.0.0 运行任何ip访问
然后重启服务

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值