打开scrapyd的文档(https://scrapyd.readthedocs.io/en/latest/overview.html#webui),可知scrapyd默认开放在6800端口。 显然,本地6800端口是开启的,可以确定后端是scrapyd。 那么,这里重点就是scrapyd了。我们需要阅读scrapyd的文档,方便理解这个项目的工作流程。 安装并启动scrapyd: pip install scrapyd scrapyd 启动后访问http://127.0.0.1:6800即可看到主页: ? 此时云端没有项目: ? 实际使用下来感觉其架构不合理,文档也模糊不清,周边生态如scrapyd、scrapyd-client更是陈旧不堪,问题很多,处于弃疗状态。
Scrapyd部署爬虫 1.1. 准备工作 1.2. 开始部署 1.3. 作者说 Scrapyd部署爬虫 准备工作 安装scrapyd: pip install scrapyd 安装scrapyd-client : pip install scrapyd-client 安装 http://localhost:6800/ #将前面的#删除project = JD #project的名字,可以使用默认的,当然也可以改变 在任意目录下的打开终端,输入scrapyd 是在前面scrapy.cfg中设置的deploy:JD_Spider,JD_Spider就是target,project 是JD,因此这个完整的命令是python E:\python2.7\Scripts\scrapyd-deploy JD,现在项目就部署到上面了,这下网页上就有JD了,详情请见上图 验证是否成功,你可以在网页上看有没有显示你的工程名字,另外在根目录下输入python E:\python2.7\Scripts\scrapyd-deploy
1.1.0 started: max_proc=16, runner='scrapyd.runner' a、scrapyd在windows下默认使用c:\scrapyd\scrapyd.cfg作为配置 application = scrapyd.app.application launcher = scrapyd.launcher.Launcher webroot = scrapyd.website.Root 2、scrapyd Scrapyd is a service for running Scrapy spiders. 四、使用说明 1、scrapyd安装 D:\>pip install scrapyd 使用pip命令,系统会自动安装辅助scrapyd及依赖组件。 关键是scrapyd-deploy 所在目录,具体其实可以读下scrapyd-deploy 的代码。
Scrapyd Scrapyd是部署和运行Scrapy.spider的应用程序。它使您能够使用JSON API部署(上传)您的项目并控制其spider。 Scrapyd-client Scrapyd-client是一个专门用来发布scrapy爬虫的工具,安装该程序之后会自动在python目录\scripts安装一个名为scrapyd-deploy的工具 (其实打开该文件,可以发现它是一个类似setup.py的python脚本,所以可以通过python scrapyd-deploy的方式运行) 下载安装 pip install scrapyd-client \scrapyd\txapp.py... 2018-05-25T20:38:54+0800 [-] Scrapyd web console available at http://127.0.0.1: 关键是scrapyd-deploy 所在目录,具体其实可以读下scrapyd-deploy 的代码。
Scrapyd-Client、Scrapy-Redis、Scrapyd-API、Scrapy-Splash、Jinjia2、Django、Vue.js 开发。 (注意:需要在cmd启动 scrapyd) ? gerapy管理界面的使用 部署主机 就是配置我们scrapyd 远程服务.(指定远程服务器的ip和端口等等) ? 前提是: 我们配置的scrapyd中,已经发布了 爬虫. ? Gerapy 与 scrapyd 有什么关联吗? 我们仅仅使用scrapyd是可以调用scrapy进行爬虫. 我们在gerapy中配置了scrapyd后,不需要使用命令行,可以通过图形化界面直接开启爬虫.
现在维护着一个新浪微博爬虫,爬取量已经5亿+,使用了Scrapyd部署分布式。 Scrapyd运行时会输出日志到本地,导致日志文件会越来越大,几十个G,这个其实就是Scrapy控制台的输出。 Scrapyd默认的日志目录是在用户文件夹下的logs目录。 所以在这里我们指定dir=~/logs 新建bash脚本,内容如下: #!
16docker network create --subnet=172.18.0.0/16 mynetwork 步骤2: 创建Docker容器 docker run -itd --name redis-scrapyd /github.com/xingxingzaixian/docker_scrapy_redis_python3.6.git,大家都可以使用一下命令来创建镜像 创建镜像 docker build -t scrapyd_redis redis.conf文件中bind配置为localhost,方便替换 docker exec 容器ID sed -i "s/localhost/172.18.0.3/g" /app/redis.conf 启动容器内scrapyd 和redis服务 启动scrapyd和redis服务 docker exec -d 容器ID redis-server /app/redis.conf docker exec -d 容器ID scrapyd
所以我想到了用Scrapyd服务实现。 部署爬虫项目 安装scrapyd服务 pip install scrapyd 启动scrapyd服务 scrapyd # 就这一条shell命令即可启动服务 如果你相对爬虫服务做一些配置 情况1:(爬虫程序在linux, 上面讲的scrapyd服务也在linux) 首先安装个模块: pip install scrapyd-client 修改scrapy的scrapy.cfg文件: [deploy " %1 %2 %3 %4 %5 %6 %7 %8 %9 随后将刚才的路径,配置到环境变量中(如果不想设置环境变量,那么每次需要用绝对路径用scrapyd-deploy) scrapyd-deploy pip install python-scrapyd-api # 预先安装此模块 from scrapyd_api import ScrapydAPI scrapyd = ScrapydAPI('
系统:centos7.4 安装scrapyd:pip isntall scrapyd 因为我腾讯云上是python2与python3并存的 所以我执行的命令是:pip3 isntall scrapyd 安装后新建一个配置文件: sudo mkdir /etc/scrapyd sudo vim /etc/scrapyd/scrapyd.conf 写入如下内容:(给内容在https://scrapyd.readthedocs.io application = scrapyd.app.application launcher = scrapyd.launcher.Launcher webroot = scrapyd.website.Root addversion.json = scrapyd.webservice.AddVersion listprojects.json = scrapyd.webservice.ListProjects 主要更改bind_address=0.0.0.0 创建文件后执行命令启动scrapyd: (scrapyd > /dev/null &) 当想要记录输出日志时: (scrapyd > /root/
scrapyd部署scrapy项目 学习目标 了解 scrapyd的使用流程 ---- 1. scrapyd的介绍 scrapyd是一个用于部署和运行scrapy爬虫的程序,它允许你通过JSON API 来部署爬虫项目和控制爬虫运行,scrapyd是一个守护进程,监听爬虫的运行和请求,然后启动进程来执行它们 所谓json api本质就是post请求的webapi 2. scrapyd的安装 scrapyd 服务: pip install scrapyd scrapyd客户端: pip install scrapyd-client 3. 启动scrapyd服务 在scrapy项目路径下 启动scrapyd的命令:sudo scrapyd 或 scrapyd 启动之后就可以打开本地运行的scrapyd,浏览器中访问本地6800端口可以查看 还有其他webapi,百度搜索了解更多 ---- 小结 在scrapy项目路径下执行sudo scrapyd或scrapyd,启动scrapyd服务;或以后台进程方式启动nohup scrapyd >
我们使用了Scrapyd-Client成功将Scrapy项目部署到Scrapyd运行,前提是需要提前在服务器上安装好Scrapyd并运行Scrapyd服务,而这个过程比较麻烦。 二、对接Docker 新建一个项目,新建一个scrapyd.conf,即Scrapyd的配置文件,内容如下: [scrapyd] eggs_dir = eggs logs_dir = logs 第四行的COPY是将当前目录下的scrapyd.conf文件复制到虚拟容器的/etc/scrapyd/目录下,Scrapyd在运行的时候会默认读取这个配置。 这里我们直接用scrapyd来启动Scrapyd服务。 基本工作完成了,我们运行如下命令进行构建: docker build -t scrapyd:latest . /scrapyd Scrapyd成功在其他服务器上运行。
我们在上一节实现了Scrapyd和Docker的对接,这样每台主机就不用再安装Python环境和安装Scrapyd了,直接执行一句Docker命令运行Scrapyd服务即可。 首先需要有一台已经安装好环境的云主机,Docker和Scrapyd镜像均已经正确安装,Scrapyd镜像启动加到开机启动脚本中,可以在开机时自动启动。 配置完成之后登录新到云主机,即可看到当前主机Docker和Scrapyd镜像都已经安装好,Scrapyd服务已经正常运行。 我们就通过自定义镜像的方式实现了相同环境的云主机的批量部署。 这里的命令完成的是安装Docker并运行Scrapyd镜像服务的过程。 到此为止,我们解决了批量部署的问题,创建主机完毕之后即可直接使用Scrapyd服务。
这里有现成的工具来完成部署过程,它叫作Scrapyd-Client。本节将简单介绍使用Scrapyd-Client部署Scrapy项目的方法。 一、准备工作 请先确保Scrapyd-Client已经正确安装。 二、Scrapyd-Client 的功能 Scrapyd-Client为了方便Scrapy项目的部署,提供如下两个功能。 例如: scrapyd-deploy --version 201707131455 值得注意的是,在Python 3的Scrapyd 1.2.0版本中,版本号不能指定为带字母的字符串,它们必须为纯数字, 地址,然后调用scrapyd-deploy命令加主机名称即可实现部署。 四、结语 本节介绍了利用Scrapyd-Client来方便地将项目部署到Scrapyd的过程,有了它部署不再是麻烦事。
我们使用由 scrapy 官方提供的爬虫管理工具 scrapyd 来部署爬虫程序。 1 为什么使用 scrapyd? 2 使用 scrapyd 2.1 原理 选择一台主机当做服务器,安装并启动 scrapyd 服务。 再这之后,scrapyd 会以守护进程的方式存在系统中,监听爬虫地运行与请求,然后启动进程来执行爬虫程序。 2.2 安装 scrapyd 使用 pip 能比较方便地安装 scrapyd。 ? 3 项目部署 直接使用 scrapyd-client 提供的 scrapyd-deploy 工具 3.1 原理 scrapyd 是运行在服务器端,而 scrapyd-client 是运行在客户端。 客户端使用 scrapyd-client 通过调用 scrapyd 的 json 接口来部署爬虫项目。 3.2 安装 scrapyd-client 在终端下运行以下安装命令: ?
配置 安装完毕之后需要新建一个配置文件 /etc/scrapyd/scrapyd.conf,Scrapyd 在运行的时候会读取此配置文件。 执行命令新建文件: sudo mkdir /etc/scrapyd sudo vi /etc/scrapyd/scrapyd.conf 写入如下内容: [scrapyd] eggs_dir = eggs 后台运行 由于 Scrapyd 是一个纯 Python 项目,在这里可以直接调用 scrapyd 来运行,为了使程序一直在后台运行,Linux 和 Mac 可以使用如下命令: (scrapyd > /dev /null &) 这样 Scrapyd 就会在后台持续运行了,控制台输出直接忽略,当然如果想记录输出日志可以修改输出目标,如: (scrapyd > ~/scrapyd.log &) 则会输出 Scrapyd 另外 Scrapyd 也支持 Docker,在后文我们会介绍 Scrapyd Docker 镜像的制作和运行方法。 5.
所以,这时候就出现了另一个库 Scrapyd,GitHub:https://github.com/scrapy/scrapyd,有了它我们只需要在远程服务器上安装一个 Scrapyd,启动这个服务,就可以将我们写的 Scrapy 项目部署到远程主机上了,Scrapyd 还提供了各种操作 API,可以自由地控制 Scrapy 项目的运行,API 文档:http://scrapyd.readthedocs.io/en 所以,有了它们,我们可以完成的是: 通过 Scrapyd 完成 Scrapy 项目的部署 通过 Scrapyd 提供的 API 来控制 Scrapy 项目的启动及状态监控 通过 Scrapyd-Client 安装 Gerapy 是一款分布式爬虫管理框架,支持 Python 3,基于 Scrapy、Scrapyd、Scrapyd-Client、Scrapy-Redis、Scrapyd-API、Scrapy-Splash 这样我们可以在状态一栏看到各个 Scrapyd 服务是否可用,同时可以一目了然当前所有 Scrapyd 服务列表,另外我们还可以自由地进行编辑和删除。
GitHub:github.com/my8100 一、需求分析 初级用户: 只有一台开发主机 能够通过 Scrapyd-client 打包和部署 Scrapy 爬虫项目,以及通过 Scrapyd JSON ,如果需要远程访问 Scrapyd,则需将 Scrapyd 配置文件中的 bind_address 修改为 bind_address = 0.0.0.0,然后重启 Scrapyd。 ,支持添加认证信息和分组/标签: SCRAPYD_SERVERS = [ '127.0.0.1', # 'username:password@localhost:6801#group', ] 6、通过运行命令 scrapydweb 启动 ScrapydWeb 四、访问 Web UI 通过浏览器访问并登录 http://127.0.0.1:5000 Overview 页面自动输出所有 Scrapyd server 的运行状态 通过分组和过滤可以自由选择若干台 Scrapyd server,调用 Scrapyd 提供的所有 HTTP JSON API,实现一次操作,批量执行 五、部署项目 支持指定若干台
这里其实可以通过scrapyd,下面是这个scrapyd的github地址:https://github.com/scrapy/scrapyd 当在远程主机上安装了scrapyd并启动之后,就会再远程主机上启动一个 //scrapyd.readthedocs.io/en/stable/ 安装scrapyd 安装scrapyd:pip install scrapyd 这里我在另外一台ubuntu linux虚拟机中同样安装 scrapy以及scrapyd等包,保证所要运行的爬虫需要的包都完成安装,这样我们就有了两台linux,包括上篇文章中我们已经有的linux环境 在这里有个小问题需要注意,默认scrapyd启动是通过scrapyd /dist-packages/scrapyd/default_scrapyd.conf 这样我们就可以通过浏览器访问: ? 关于部署 如何通过scrapyd部署项目,这里官方文档提供一个地址:https://github.com/scrapy/scrapyd-client,即通过scrapyd-client进行操作 这里的scrapyd-client
配置文件拷贝到镜像指定目录ADD scrapyd.conf ~/.scrapyd.conf# 创建scrapyd数据目录,设置时区,保证镜像时间正常,安装python环境库RUN mkdir /scrapyd 端口EXPOSE 6800 80# docker容器启动时执行scrapyd命令,启动scrapydCMD ["scrapyd", "redis-server"] 创建requirements.txt, 创建scrapyd.conf文件,主要是配置scrapyd环境,在我们的Dockerfile文件中使用ADD [scrapyd]# 项目的eggs存储位置eggs_dir = /scrapyd/eggs 启动的Scrapy进程runner = scrapyd.runnerapplication = scrapyd.app.applicationlauncher = scrapyd.launcher.Launcherwebroot = scrapyd.website.Root[services]schedule.json = scrapyd.webservice.Schedulecancel.json = scrapyd.webservice.Canceladdversion.json
可以理解Scrapyd是一个管理我们写的Scrapy项目的,配置好这个之后,可以通过命令运行,暂停等操作控制爬虫 其他的就不说了,这个用的也不多,我们需要做的就是将它启动就可以了 启动Scrapyd服务 打包Scrapy上传到Scrapyd 上述只是启动了Scrapyd,但是并没有将Scrapy项目部署到Scrapy上,需要配置以下Scrapy的scrapy.cfg文件 ? 配置如下 ? 打包命令 scrapyd-deploy <部署名> -p <项目名> 本次示例命令 scrapyd-deploy qb -p qiushi 如图所示,出现以下图片表示成功 ? 启动,挂在后台,其实本质还是向Scrapyd服务发请求,只不过是可视化操作而已 基于 Scrapy、Scrapyd、Scrapyd-Client、Scrapy-Redis、Scrapyd-API、Scrapy-Splash 解决scrapyd-deploy不是内部外部命令 通常情况下,在执行scrapyd-deploy时,会提示scrapyd-deploy不是内部或外部命令,嗯...这个是正常操作 解决步骤 找到Python