天天看点

分布式爬虫-部署

分布式爬虫-部署

分布式爬虫-部署

打开ubuntu

sudo su 转换成root用户,不转输入命令需要加sudo

安装python3 :apt pip install python3-pip

安装scrapyd : pip3 install scrapyd 报以下错误码,

需要更新setuptools见下图 :pip3 install --upgrade setuptools

再次执行: pip3 install scrapyd 成功

分布式爬虫-部署

进入安装目录:[email protected]:/# cd /usr/local/lib/python3.6/dist-packages

cd scrapyd 后ls查询看到有一个default_scrapyd.conf文件,将这个文件拷贝到/etc/scrapyd/scrapyd.con中

进入etc目录:cd etc ,创建一个scrapyd文件夹:mkdir scrapyd, 创建完成后再次回到目录cd /user/local/lib/python3.7/dist-packages 中执行:cp default_scrapyd.con /etc/scrapyd/scrapy.con

分布式爬虫-部署

修改’ /etc/scrapyd/scrapyd.con’中的’bind_addrss’为自己的IP地址

重新安装’twisted’

pip uninstall twisted

pip install twisted==18.9.0

这一步不做,后期会出现intxxx的错误

进入etc目录:cd /etc/scrapyd,修改配置:vim scrapyd.con 中修改bind_address添加服务器ip地址如下图,

再 :wq保存退出

分布式爬虫-部署

创建一个文件夹srv: mkdir srv, cd进入srv, 再创建一个文件夹lj: mkdir lj, cd进入lj, 运行scrapyd,会出现连接

分布式爬虫-部署
分布式爬虫-部署

在浏览器中打开网址:http://192.168.65.148:6800 出现下面的页面,说明运行成功:

分布式爬虫-部署

以上虚机上安装成功结束后,进入到pychar项目中的scrapy.cfg文件进行配置;

从项目目录中打开cmder命令安装:pip install scrapyd-client

执行上图"爬虫部署"截图第8条中网址下载安装双击bin执行:curl

在项目所在的路径执行命令生成版本号并上传爬虫代码:‘scrapyd-deploy’。如果要一次性想要反代码上传到多个服务器,那么可以修改’scrapyd-cfg’为如下:

分布式爬虫-部署

从lj项目路径打开cmder安装完成pip install scrapyd-client ,执行scrapyd-deploy一直报错:‘scrapyd-deploy’ 不是内部或外部命令,也不是可运行的程序或批处理文件。

出错原因两点:

1. 未在本地安装scrapyd。pip install scrapyd和scrapyd-client版本不兼容!

直接pip安装的scrapyd版本为1.2.0,scrapyd-client版本为:1.1.0

2. 重新安装pip install scrapyd-client==1.2.0a1 再执行scrapyd-deploy成功了,生成一个单程时间戳版本号

分布式爬虫-部署
分布式爬虫-部署

使用生成的"version":"1630833985"版本后,会把本地代码上传到scrapy.cfg中写好的192.168.65.148服务器上面去

分布式爬虫-部署

https://scrapyd.readthedocs.io/en/stable/ 进入入点击API/ schedule.josn:

分布式爬虫-部署

运行上图页面命令:替换成自己项目名称和爬虫名

curl http://192.168.65.148:6800/schedule.json -d project=lj -d spider=house

执行以上命令->前提是已安装好curl

项目名称:project=lj 爬虫名:spider=house

分布式爬虫-部署

执行完成可打开网点击jobs可以看到Running爬虫运行起来了,点Log看到运行结果,

分布式爬虫-部署

取消爬虫运行:

curl http://localhost:6800/cancel.json -d project=myproject -d job=6487ec79947edab326d6db28a2d86511e8247444

分布式爬虫-部署

退出运行命令:

curl http://192.168.65.148:6800/cancel.json -d project=lj -d job=91785a600e4911ecaf0d000c2935751f

分布式爬虫-部署

一次性部署多台爬虫:

  1. 删除之前创建的lj文件夹[email protected]:/home/ellen/srv# rm -rf lj
  2. 删除pychar中lj项目部署一台爬虫时时产生的文件:build/ prodect.egg-info/ setup.py/
  3. 打开scrapy.cfg,添加多台服务器url, 同时修改不一样的名字;

    scrapy.cfg:

    分布式爬虫-部署
  4. xshell中创建新的文件夹mkdir srv ,进入srv后再创建新的文件夹mkdir lj ,cd进入lj 运行:scrpyd,第二台服务器也已经运行。
  5. 回到xshell中第一台服务器中同上创建srv,lj文件夹,cd进入到lj后运行scrapyd,第一台服务器也已开始运行。
  6. 回到cmder客户端中,执行:scrapyd-deploy -a (-a表示部署配置的所有服务),部署的过程只是把代码提交到服务器上,并不是运行。
  7. 回到xshell 查看ls ,可以看到多了dbs eggs文件,说明已部署成功了,多个服务器部署成功。
  8. 如果后期修改了爬虫代码,那么需要重新部署,然后服务器的scrapyd服务器重新启动一下。

    更多的API介绍:https://scrapyd.readthedocs.io/en/stable/api.html