HOW2J 发表于 2020-2-19 10:48

python爬虫笔记--部署相关库的安装

本帖最后由 HOW2J 于 2020-2-19 10:54 编辑
# 部署相关库的安装
* 大规模抓取数据,需要分布式爬虫。分布式爬虫需要多台主机,每台主机有多个爬虫任务,但源代码只有一份。需要将一份代码同时部署到多台主机上来协同运行。
* Scrapy是Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。
* 对于Scrapy,它有一个扩展组件,叫Scrapyd,安装该扩展组件之后,即可远程管理Scrapy任务,包括部署源码、启动任务、监听任务。还要安装Scrapyd-Client和Scrapyd API来更方便地完成部署和监听操作,还可以利用Docker集群部署。只需要将爬虫制作为Docker镜像,只要主机安装了Dicker,就可以直接运行爬虫。就不用担心环境配置、版本问题。

## 1. Docker的安装
  Docker是一种容器技术,可以将应用和环境等进行打包,形成一个独立的、类似于iOS的App形式的“应用”。这个应用可以直接被分发到任意一个支持Docker的环境中,通过简单的命令即可启动运行。Docker是一种最流行的容器化实行方案,和虚拟化技术类似,能极大的方便应用服务的部署;又于虚拟化技术不同,它以一种更轻量的方式实现应用服务的打包。使用Docker,可以让每个彼此相互隔离,在同一台机器上同时运行多个应用,但它们之间共享一个操作系统。Docker的优势在于:可以在更细的粒度上进行资源管理,也比虚拟化技术更加节约资源。

* 链接:
网站:https://www.docker.com
Github:https://github.com/docker
Docker Hub: https://hub.docker.com
文档:https://docs.docker.com
中文社区:http://www.docker.org.cn
中文教程:http://www.runoob.com.docker/docker-tutorial.html
图书:https://yeasy.gitbooks.io/docker_practice

* 安装方法:
https://blog.csdn.net/u012954706/article/details/79592099

## 2. Scrapyd的安装
* Scrapyd是一个用于部署和运行Scrapy项目的工具,我们可以利用它将写好的Scrapy项目上传到云主机并通过API来控制它的运行。

* 链接
Github:https://github.com/scrapy/scrapyd
文档:https://scrapyd.readthedocs.io

* pip安装
命令:pip3 install scrapyd
**安装**
    - https://blog.csdn.net/u010476994/article/details/79991842

## 3. Scrapyd-Client的安装
将Scrapy代码部署到远程Scrapyd的时候,第一步就是要将代码打包为EGG文件,其次需要将EGG文件上传到远程主机。这个需要程序来实现,但Scrapyd-Client已经实现了这些功能。

* 链接
Github: https://github.com/scrapy/scrapyd-client
使用说明:https://github.com/scrapy/scrapyd-client#scrapyd-deploy

* pip安装
命令:pip3 install scrapyd-client

* 安装验证
安装之后,有一个部署命令:scraapyd-deploy,输入命令验证是否安装成功:
```
scrapyd-deploy -h
```

## 4. Scrapyd API的安装
安装好Scrapyd之后,可以直接请求它提供的API来获取当前主机的Scrapy任务运行状况。但用这种方式来获取任务状态还是有点繁琐,所以Scrapyd API就为它做了一层封装。

* 链接
Giyhub:https://pypi.python.org/pypi/python-scrapyd-api/
文档:http://python-scrapyd-api.readthedocs.io/en/latest/usage.html

* pip安装
命令:pip3 install python——scrapyd-api

* 安装验证
可以使用python来获取主机状态,用python代码测试一下:
```python
from scrapyd_api import ScrapydAPI
scrapyd = ScrapydAPI('http://localhost:6800')
print(scrapyd.list_project)
```
运行结果:["myproject", "otherproject"]。
这样可以用python直接获取各个主机上的Scrapy任务的运行状态。

* 可能遇到的问题
    - http://www.mamicode.com/info-detail-2667209.html
    - https://blog.csdn.net/miraclepbs/article/details/88534510
    - pycharm中执行python报错:ConnectionRefusedError: 由于目标计算机积极拒绝无法连接:https://blog.csdn.net/xc_zhou/article/details/81021422

## 5. Scrapyrt的安装
  Scrapyrt为Scrapy提供了一个调度的HTTP接口,这样我们就不需要在执行Scrapy命令而是通过请求一个HTTP接口来调度Scrapy任务的跳度。

* 链接
Github:https://github.com/scrapinghub/scrapyrt
文档:http://scrapyrt.readthedocs.io

* pip安装
命令:pip3 install scrapyrt
运行之后,会默认在9080端口上启动服务,更换端口,使用-p参数,比如:scrapyrt -p 9081 ,这样端口就会在9081端口上运行了。

* Docker安装
  Scrapyrt也支持Docker,比如,要想在9080端口上运行,且本地Scrapy项目路径为/home/quoteshot。命令如下:
```
docker run -p 9080:9080 -tid -v /home/user/quotesbot:/scrapyt/project scrapinghub/scrapyrt
```

## 6. Gerapy的安装
Gerapy是一个Scrapy分布式管理模块。

* 链接
Github:https://github.com/Gerapy

* pip安装
命令:pip3 install gerapy

* 安装测试
python命令测试:
```
$ python
>>> import gerapy
```
没有报错,则安装成功。

大部分内容参照《《Python 3网络爬虫开发实战》》

HOW2J 发表于 2020-2-19 10:49

欢迎大家评论交流{:1_893:}

txylyz 发表于 2020-2-19 11:12

这个老不好学了!{:1_924:}

南吕拾贰 发表于 2020-2-19 11:19

太难了,萌新入门。

在线小学生 发表于 2020-2-19 11:23

仰视高端大神,学习了学习了~ 收听了收听了, 多谢大神分享.

白晓生 发表于 2020-2-19 11:31

厉害了我的楼主膜拜了大神,介绍的很是详细

zaijiankelu 发表于 2020-2-19 11:39

Sylia若风 发表于 2020-2-19 11:44

萌新点赞

超级User 发表于 2020-2-19 14:28

谢谢分享

hnwang 发表于 2020-2-19 17:18

总结的不错 感谢分享
页: [1]
查看完整版本: python爬虫笔记--部署相关库的安装