iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python3网络爬虫实战-12、部署相
  • 303
分享到

Python3网络爬虫实战-12、部署相

爬虫实战网络 2023-01-31 07:01:42 303人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

如果想要大规模抓取数据,那么一定会用到分布式爬虫,对于分布式爬虫来说,我们一定需要多台主机,每台主机多个爬虫任务,但是源代码其实只有一份。那么我们需要做的就是将一份代码同时部署到多台主机上来协同运行,那么怎么去部署就又是一个值得思考的问题。

如果想要大规模抓取数据,那么一定会用到分布式爬虫,对于分布式爬虫来说,我们一定需要多台主机,每台主机多个爬虫任务,但是源代码其实只有一份。那么我们需要做的就是将一份代码同时部署到多台主机上来协同运行,那么怎么去部署就又是一个值得思考的问题。

对于 scrapy 来说,它有一个扩展组件叫做 Scrapyd,我们只需要安装 Scrapyd 即可远程管理 Scrapy 任务,包括部署源码、启动任务、监听任务等操作。另外还有 ScrapydClient 和 Scrapydapi 来帮助我们更方便地完成部署和监听操作。

另外还有一种部署方式就是 Docker 集群部署,我们只需要将爬虫制作为 Docker 镜像,只要主机安装了 Docker,就可以直接运行爬虫,而无需再去担心环境配置、版本问题。

本节我们就来介绍一下相关环境的配置过程。

Docker 是一种容器技术,它可以将应用和环境等进行打包,形成一个独立的,类似于 iOS 的 APP 形式的「应用」,这个应用可以直接被分发到任意一个支持 Docker 的环境中,通过简单的命令即可启动运行。Docker 是一种最流行的容器化实现方案。和虚拟化技术类似,它极大的方便了应用服务的部署;又与虚拟化技术不同,它以一种更轻量的方式实现了应用服务的打包。使用 Docker 可以让每个应用彼此相互隔离,在同一台机器上同时运行多个应用,不过他们彼此之间共享同一个操作系统。Docker 的优势在于,它可以在更细的粒度上进行资源的管理,也比虚拟化技术更加节约资源。python资源分享qun 784758214 ,内有安装包,pdf学习视频,这里是Python学习者的聚集地,零基础,进阶,都欢迎
本段参考:DaoCloud官方文档
对于爬虫来说,如果我们需要大规模部署爬虫系统的话,用 Docker 会大大提高效率,工欲善其事,必先利其器。
本节来介绍一下三大平台下 Docker 的安装方式。

1. 相关链接

2. linux下的安装

详细的分步骤的安装说明可以参见官方文档:https://docs.docker.com//engin...
在官方文档中详细说明了不同 Linux 系统的安装方法,安装流程根据文档一步步执行即可安装成功。
但是为了使得安装更加方便,Docker 官方还提供了一键安装脚本,使用它会使得安装更加便捷,不用再去一步步执行命令安装了,在此介绍一下一键脚本安装方式。
首先是 Docker 官方提供的安装脚本,相比其他脚本,官方提供的一定更靠谱,安装命令如下:

curl -sSL https://get.docker.com/ | sh

只要执行如上一条命令,等待一会儿 Docker 便会安装完成,非常方便。
但是官方脚本安装有一个缺点,那就是慢,也可能下载超时,所以为了加快下载速度,我们可以使用国内的镜像来安装,所以在这里还有阿里云和 DaoCloud 的安装脚本。
阿里云安装脚本:

curl -sSL Http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -

DaoCloud 安装脚本:

curl -sSL https://get.daocloud.io/docker | sh

两个脚本可以任选其一,速度都非常不错。
等待脚本执行完毕之后,就可以使用 Docker 相关命令了,如运行测试 Hello World 镜像:

docker run hello-world

运行结果:

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
78445dd45222: Pull complete 
Digest: sha256:c5515758d4c5e1e838e9cd307f6c6a0d620b5e07e6f927b07d05f6d12a1ac8d7
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.

如果出现上文类似提示内容则证明 Docker 可以正常使用了。

3. Mac下的安装

Mac 平台同样有两种选择,Docker for Mac 和 Docker Toolbox。
Docker for Mac 要求系统为 OS X EI Captain 10.11 或更新,至少 4GB 内存,如果你的系统满足此要求,则强烈建议安装 Docker for Mac。
可以使用 HomeBrew 安装,安装命令如下:

brew cask install docker
Python资源分享qun 784758214 ,内有安装包,PDF,学习视频,这里是Python学习者的聚集地,零基础,进阶,都欢迎

另外也可以手动下载安装包安装,安装包下载地址为:https://download.docker.com/m...
下载完成之后直接双击安装包,然后将程序拖动到应用程序中即可。
点击程序图标运行 Docker,会发现在菜单栏中出现了 Docker 的图标,如图 1-83 中的第三个小鲸鱼图标:

Python3网络爬虫实战-12、部署相关库的安装:Docker、Scrapyd

图 1-83 菜单栏
点击图标展开菜单之后,再点击 Start 按钮即可启动 Docker,启动成功便会提示 Docker is running,如图 1-84 所示:

Python3网络爬虫实战-12、部署相关库的安装:Docker、Scrapyd

图 1-84 运行页面
随后我们就可以在命令行下使用 Docker 命令了。
可以使用如下命令测试运行:

sudo docker run hello-world

运行结果如图 1-85 所示:

Python3网络爬虫实战-12、部署相关库的安装:Docker、Scrapyd

图 1-85 运行结果
如果出现类似输出则证明 Docker 已经成功安装。
如果系统不满足要求,可以下载 Docker Toolbox,其安装说明为:https://docs.docker.com//toolb...
关于 Docker for Mac 和 Docker Toolbox 的区别,可以参见:https://docs.docker.com//docke...

4. 镜像加速

安装好 Docker 之后,在运行测试命令时,我们会发现它首先会下载一个 Hello World 的镜像,然后将其运行,但是下载速度有时候会非常慢,这是因为它默认还是从国外的 Docker Hub 下载的,所以为了提高镜像的下载速度,我们还可以使用国内镜像来加速下载,所以这就有了 Docker 加速器一说。
推荐的 Docker 加速器有 DaoCloud 和阿里云。
DaoCloud:https://www.daocloud.io/mirror
阿里云:https://cr.console.aliyun.com/...
不同平台的镜像加速方法配置可以参考 DaoCloud 的官方文档:http://guide.daocloud.io/dcs/...
配置完成之后,可以发现镜像的下载速度会快非常多。
以上便是 Docker 的安装方式说明。

Scrapyd 是一个用于部署和运行 Scrapy 项目工具。有了它,你可以将写好的 Scrapy 项目上传到云主机并通过 API 来控制它的运行。
既然是 Scrapy 项目部署,所以基本上都使用 Linux 主机,所以本节的安装是针对于 Linux 主机的。

1. 相关链接

2. Pip安装

推荐使用 Pip 安装,命令如下:

pip3 install scrapyd

3. 配置

安装完毕之后需要新建一个配置文件 /etc/scrapyd/scrapyd.conf,Scrapyd 在运行的时候会读取此配置文件。
在 Scrapyd 1.2 版本之后不会自动创建该文件,需要我们自行添加。
执行命令新建文件:

sudo mkdir /etc/scrapyd
sudo vi /etc/scrapyd/scrapyd.conf

写入如下内容:

[scrapyd]
eggs_dir    = eggs
logs_dir    = logs
items_dir   =
jobs_to_keep = 5
dbs_dir     = dbs
max_proc    = 0
max_proc_per_cpu = 10
finished_to_keep = 100
poll_interval = 5.0
bind_address = 0.0.0.0
http_port   = 6800
debug       = off
runner      = scrapyd.runner
application = scrapyd.app.application
launcher    = scrapyd.launcher.Launcher
WEBroot     = scrapyd.website.Root

[services]
schedule.JSON     = scrapyd.webservice.Schedule
cancel.json       = scrapyd.webservice.Cancel
addversion.json   = scrapyd.webservice.AddVersion
listprojects.json = scrapyd.webservice.ListProjects
listversions.json = scrapyd.webservice.ListVersions
listspiders.json  = scrapyd.webservice.ListSpiders
delproject.json   = scrapyd.webservice.DeleteProject
delversion.json   = scrapyd.webservice.DeleteVersion
listjobs.json     = scrapyd.webservice.ListJobs
daemonstatus.json = scrapyd.webservice.DaemonStatus

配置文件的内容可以参见官方文档:https://scrapyd.readthedocs.i/...,在这里的配置文件有所修改,其中之一是 max_proc_per_cpu 官方默认为 4,即一台主机每个 CPU 最多运行 4 个Scrapy Job,在此提高为 10,另外一个是 bind_address,默认为本地 127.0.0.1,在此修改为 0.0.0.0,以使外网可以访问。

4. 后台运行

由于 Scrapyd 是一个纯 Python 项目,在这里可以直接调用 scrapyd 来运行,为了使程序一直在后台运行,Linux 和 Mac 可以使用如下命令:

(scrapyd > /dev/null &)

这样 Scrapyd 就会在后台持续运行了,控制台输出直接忽略,当然如果想记录输出日志可以修改输出目标,如:

(scrapyd > ~/scrapyd.log &)

则会输出 Scrapyd 运行输出到 ~/scrapyd.log 文件中。
运行之后便可以在浏览器的 6800 访问 WebUI 了,可以简略看到当前 Scrapyd 的运行 Job、Log 等内容,如图 1-86 所示:

Python3网络爬虫实战-12、部署相关库的安装:Docker、Scrapyd

图 1-86 Scrapyd 首页
当然运行 Scrapyd 更佳的方式是使用 Supervisor 守护进程运行,如果感兴趣可以参考:http://supervisord.org/
另外 Scrapyd 也支持 Docker,在后文我们会介绍 Scrapyd Docker 镜像的制作和运行方法。

5. 访问认证

限制配置完成之后 Scrapyd 和它的接口都是可以公开访问的,如果要想配置访问认证的话可以借助于 Nginx 做反向代理,在这里需要先安装 Nginx 服务器
在此以 ubuntu 为例进行说明,安装命令如下:

sudo apt-get install nginx

然后修改 Nginx 的配置文件 nginx.conf,增加如下配置:

http {
    server {
        listen 6801;
        location / {
            proxy_pass    http://127.0.0.1:6800/;
            auth_basic    "Restricted";
            auth_basic_user_file    /etc/nginx/conf.d/.htpasswd;
        }
    }
}

在这里使用的用户名密码配置放置在 /etc/nginx/conf.d 目录,我们需要使用 htpasswd 命令创建,例如创建一个用户名为 admin 的文件,命令如下:

htpasswd -c .htpasswd admin

接下就会提示我们输入密码,输入两次之后,就会生成密码文件,查看一下内容:

cat .htpasswd 
admin:5ZBxQr0rCqwbc

配置完成之后我们重启一下 Nginx 服务,运行如下命令:

sudo nginx -s reload
Python资源分享qun 784758214 ,内有安装包,PDF,学习视频,这里是Python学习者的聚集地,零基础,进阶,都欢迎

这样就成功配置了 Scrapyd 的访问认证了。

6. 结语

本节介绍了 Scrapyd 的安装方法,在后文我们会详细了解到 Scrapy 项目的部署及项目运行状态监控方法。

--结束END--

本文标题: Python3网络爬虫实战-12、部署相

本文链接: https://www.lsjlt.com/news/192168.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python3网络爬虫实战-12、部署相
    如果想要大规模抓取数据,那么一定会用到分布式爬虫,对于分布式爬虫来说,我们一定需要多台主机,每台主机多个爬虫任务,但是源代码其实只有一份。那么我们需要做的就是将一份代码同时部署到多台主机上来协同运行,那么怎么去部署就又是一个值得思考的问题。...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-13、部署相
    在将 Scrapy 代码部署到远程 Scrapyd 的时候,其第一步就是要将代码打包为 Egg 文件,其次需要将 Egg 文件上传到远程主机,这个过程如果我们用程序来实现是完全可以的,但是我们并不需要做这些工作,因为 ScrapydCli...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-14、部署相
    Scrapyrt 为 Scrapy 提供了一个调度的 HTTP 接口,有了它我们不需要再执行 Scrapy 命令而是通过请求一个 HTTP 接口即可调度 Scrapy 任务,Scrapyrt 比 Scrapyd 轻量级,如果不需要分布式多...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-10、爬虫框
    我们直接用 Requests、Selenium 等库写爬虫,如果爬取量不是太大,速度要求不高,是完全可以满足需求的。但是写多了会发现其内部许多代码和组件是可以复用的,如果我们把这些组件抽离出来,将各个功能模块化,就慢慢会形成一个框架雏形,久...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-11、爬虫框
    ScrapySplash 是一个 Scrapy 中支持 JavaScript 渲染的工具,本节来介绍一下它的安装方式。ScrapySplash 的安装分为两部分,一个是是 Splash 服务的安装,安装方式是通过 Docker,安装之后会...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-15、爬虫基
    在写爬虫之前,还是需要了解一些爬虫的基础知识,如 HTTP 原理、网页的基础知识、爬虫的基本原理、Cookies 基本原理等。 那么本章内容就对一些在做爬虫之前所需要的基础知识做一些简单的总结。 在本节我们会详细了解 HTTP 的基本原理...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-17、爬虫基
    爬虫,即网络爬虫,我们可以把互联网就比作一张大网,而爬虫便是在网上爬行的蜘蛛,我们可以把网的节点比做一个个网页,爬虫爬到这就相当于访问了该页面获取了其信息,节点间的连线可以比做网页与网页之间的链接关系,这样蜘蛛通过一个节点后可以顺着节点连线...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-9、APP爬
    Appium 是移动端的自动化测试工具,类似于前面所说的 Selenium,利用它我们可以驱动 Android、iOS 等设备完成自动化测试,比如模拟点击、滑动、输入等操作,其官方网站为:http://appium.io/,本节来了解一下 ...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-7、APP爬
    MitmProxy 是一个支持 HTTP 和 HTTPS 的抓包程序,类似 Fiddler、Charles 的功能,只不过它是一个控制台的形式操作。同时 MitmProxy 还有两个关联组件,一个是 MitmDump,它是 MitmProx...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-8、APP爬
    MitmProxy 是一个支持 HTTP 和 HTTPS 的抓包程序,类似 Fiddler、Charles 的功能,只不过它是一个控制台的形式操作。同时 MitmProxy 还有两个关联组件,一个是 MitmDump,它是 MitmProx...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-6、APP爬
    除了 Web 网页,爬虫也可以对 APP 的数据进行抓取,APP 中的页面要加载出来,首先需要获取数据,那么这些数据一般是通过请求服务器的接口来获取的,由于 APP 端没有像浏览器一样的开发者工具直接比较直观地看到后台的请求,所以对 APP...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-30、PyQ
    在上一节我们介绍了 BeautifulSoup 的使用,它是一个非常强大的网页解析库,可有没有觉得它的一些方法使用有点不适应?有没有觉得它的 CSS 选择器功能没有那么强大? 如果你对 Web 有所涉及,如果你比较喜欢用 CSS 选择器,如...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-18、Ses
    在浏览网站的过程中我们经常会遇到需要登录的情况,有些页面只有登录之后我们才可以访问,而且登录之后可以连续访问很多次网站,但是有时候过一段时间就会需要重新登录。还有一些网站有时在我们打开浏览器的时候就自动登录了,而且很长的时间都不会失效,这种...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-25、req
    在前面一节我们了解了 Requests 的基本用法,如基本的 GET、POST 请求以及 Response 对象的用法,本节我们再来了解下 Requests 的一些高级用法,如文件上传,代理设置,Cookies 设置等等。 我们知道 Re...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-16、Web
    我们平时用浏览器访问网站的时候,一个个站点形形×××,页面也各不相同,但有没有想过它是为何才能呈现出这个样子的?那么本节我们就来了解一下网页的基本组成、结构、节点等内容。 网页可以分为三大部分,HTML、CSS、JavaScript,我们...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-24、req
    在前面一节我们了解了 Urllib 的基本用法,但是其中确实有不方便的地方。比如处理网页验证、处理 Cookies 等等,需要写 Opener、Handler 来进行处理。为了更加方便地实现这些操作,在这里就有了更为强大的库 Request...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-27、Req
    本节我们利用 Requests 和正则表达式来抓取猫眼电影 TOP100 的相关内容,Requests 相较于 Urllib 使用更加方便,而目前我们还没有系统学习 HTML 解析库,所以可能对 HTML 的解析库不是很了解,所以本节我们选...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-5、Web库
    Web 想必我们都不陌生,我们现在日常访问的网站都是 Web 服务程序搭建而成的,Python 同样不例外也有一些这样的 Web 服务程序,比如 Flask、Django 等,我们可以拿它来开发网站,开发接口等等。 在本书中,我们主要要用到...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-23、使用U
    利用 Urllib 的 robotparser 模块我们可以实现网站 Robots 协议的分析,本节我们来简单了解一下它的用法。 Robots 协议也被称作爬虫协议、机器人协议,它的全名叫做网络爬虫排除标准(Robots Exclusio...
    99+
    2023-01-31
    爬虫 实战 网络
  • Python3网络爬虫实战-19、代理基
    我们在做爬虫的过程中经常会遇到这样的情况,最初爬虫正常运行,正常抓取数据,一切看起来都是那么的美好,然而一杯茶的功夫可能就会出现错误,比如 403 Forbidden,这时候打开网页一看,可能会看到“您的 IP 访问频率太高”这样的提示。出...
    99+
    2023-01-31
    爬虫 实战 网络
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作