基于Gerapy部署分布式爬虫管理平台

文章目录

  • 1. 服务器安装scrapyd
    • 1.1 scrapyd安装
    • 1.2 scrapyd配置允许外网访问
    • 1.3 服务器安全组开启端口
    • 1.4 服务器防火墙开启端口
    • 1.5 scrapyd测试
  • 2. Gerapy 环境搭建
    • 2.1 gerapy安装
    • 2.2 gerapy测试
    • 2.3 项目部署
    • 2.4 定时任务
    • 2.5 线上代码修改

Gerapy是一个Python的分布式爬虫部署框架,支持 Python 3,基于 Scrapy、Scrapyd、Scrapyd-Client、Scrapy-Redis、Scrapyd-API、Scrapy-Splash、Jinjia2、Django、Vue.js 开发,用于方便地管理和部署爬虫项目。它提供了一套完整的工具和接口,帮助用户管理爬虫的配置、调度、监控和部署。

以下是Gerapy爬虫部署框架的主要特点和功能:

  1. 分布式架构:Gerapy基于Scrapy框架,并引入了分布式的概念。它支持将爬虫任务分配给多台机器并行执行,提高爬取效率和速度。

  2. Web界面管理:Gerapy提供了一个基于Web的管理界面,可以方便地创建、编辑和管理爬虫项目。用户可以通过浏览器访问管理界面,对爬虫进行配置和监控。

  3. 项目管理:Gerapy允许用户创建多个爬虫项目,并提供了项目管理功能。用户可以在管理界面中创建、导入和删除爬虫项目,以及管理项目的配置文件和依赖。

  4. 调度管理:Gerapy提供了灵活的调度管理功能。用户可以设置爬虫的运行时间、优先级和并发数等参数,以及配置定时任务,自动执行爬虫。

  5. 日志和监控:Gerapy提供了实时的日志和监控功能,用户可以通过管理界面查看爬虫的运行状态、日志输出和错误信息,便于调试和监控爬取过程。

  6. 部署和扩展:Gerapy支持将爬虫项目部署到多台机器上,并提供了方便的部署工具。它还支持分布式扩展,用户可以根据需要增加爬虫节点,实现高并发的爬取任务。

  7. API接口:Gerapy提供了丰富的API接口,用户可以通过编程方式管理和控制爬虫项目,例如启动、停止和修改爬虫任务等操作。

总的来说,Gerapy是一个功能强大的爬虫部署框架,它简化了爬虫项目的管理和部署过程,提高了爬取效率和可扩展性,使用户可以更加方便地开发和运行分布式爬虫项目。

1. 服务器安装scrapyd

1.1 scrapyd安装

pip3 install scrapyd

1.2 scrapyd配置允许外网访问

mkdir /etc/scrapydvim /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 = 4
finished_to_keep = 100
poll_interval = 5.0
#bind_address = 127.0.0.1  
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

主要是将bind_address = 127.0.0.1 改成 bind_address = 0.0.0.0

端口号默认6800 想要换端口好的话就改http_port

除了以上方法,此外也可以定位scrapyd.conf文件在你的python环境l修改

lib/python3.7/site-packages/scrapyd/scrapyd.conf(default_scrapyd.conf)

1.3 服务器安全组开启端口

比如我的scrapyd 默认端口是6800,那就在服务器后台开启安全组6800 端口

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ywB1Cqd2-1689753408599)(爬虫平台搭建.assets/image-20230719140608743.png)]

1.4 服务器防火墙开启端口

 # 查看防火墙已经开启的端口号firewall-cmd --list-port# 指定开启6800端口firewall-cmd --zone=public --add-port=6800/tcp --permanent# 防火墙重载配置firewall-cmd --reload

经过以上步骤,scrapyd基本算配置完成了

1.5 scrapyd测试

启动命令输入scrapyd就行了

在这里插入图片描述

然后在本地浏览器访问 http://ip:6800/ (ip是你自己服务器的ip)

在这里插入图片描述

这样就算成功,那个bai是我测试百度的爬虫,不用理会。

后面确定没问题了可以直接用nohup让它在后台运行:

nohup scrapyd > /dev/null 2>&1 &

scrapyd 环境搭好之后,就可以开始搭gerapy了

2. Gerapy 环境搭建

2.1 gerapy安装

 pip3 install gerapy

2.2 gerapy测试

服务器控制台输入gerapy,会看到以下几个帮助参数

在这里插入图片描述

第一步我们可以先创建一个文件夹,用于存放我们的gerapy项目,我这里命名gerapy_pro

mkdir gerapy_pro

第二步执行

gerapy init

第三步执行

gerapy migrate

此时我们的文件夹就已经有这些东西了

在这里插入图片描述

cd gerapy 看看

在这里插入图片描述

projects里就是我们要放scrapy 项目的地方

第四步 创建超级管理员用于登录

执行

gerapy createsuperuser

输入用户名 邮箱 密码两次 就可以了

在最后一步启动之前,我们也要像scrapyd一样给gerapy 安全组开放端口 ,默认端口8000

然后开启防火墙端口

最后一步启动

gerapy runserver 0.0.0.0:8000

端口号在启动时可以改按上面的命名改

在这里插入图片描述
启动成功,然后在本地浏览器访问 http://ip:6800 (ip是你自己服务器的ip) 就可以看到以下界面

在这里插入图片描述

后面部署项目测试没问题了就可以让gerapy 后台运行了

nohup gerapy runserver 0.0.0.0:8000 > /dev/null 2>&1 &

2.3 项目部署

输入用户名 密码 点击登录 进入

第一步创建scrapyd主机:

点击主机管理 再点击右上角创建 即进入以下界面

在这里插入图片描述

名称随便起,ip就写部署scrapyd的服务器的ip 端口号就写scrapyd服务的端口号 scrapyd服务不设置端口就默认6800

然后点击创建就可成功创建主机(注意服务器scrapyd服务要开着才会成功)

以后爬虫项目都依赖此scrapyd主机运行

第二步上传项目打包与部署:

点击左侧的项目管理 再点击右上角的 创建 就可以上传scrapy项目了 ,这里支持zip和克隆形式

在这里插入图片描述
注意scrapy 项目需要改一下scrapy.cfg配置,如下:
在这里插入图片描述

我这里演示上传zip格式的文件,上传之后,在项目管理那里就会出现上传的项目

在这里插入图片描述

然后点击部署就会出现类型下面的界面,先点击打包(我这里打包过了所以显示重新打包),再点击部署,出现打包成功 部署成功 就算成功了

在这里插入图片描述

然后点击左侧的主机管理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bhM3cEMw-1689753408604)(爬虫平台搭建.assets/image-20230719150639341.png)]

点击调度就可以看到我们的scrapy 里写的几个spider 成功部署上去了

在这里插入图片描述

点击运行即可启动爬虫

在这里插入图片描述

点击停止即会停止爬虫

2.4 定时任务

当然gerapy也支持定时任务,点击左侧任务管理,右上角创建

在这里插入图片描述

起好名字,主机就是scrapyd主机,比如我下面选择Crontab调度方式:

在这里插入图片描述

然后点击更新就可以了,之后到时间了就会在主机管理 调度那里自动调度运行。

状态查看:
在这里插入图片描述

2.5 线上代码修改

在项目管理里选择要修改的项目,点击编辑

在这里插入图片描述

即可进入整个项目

在这里插入图片描述

修改完成后会自动保存,然后再重新打包、部署

在这里插入图片描述

这样修改即生效,可以到调度那里再运行测试。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/4641.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于单片机的智能台灯 灯光控制系统人体感应楼梯灯系统的设计与实现

功能介绍 以STM32单片机作为主控系统;主通过光敏采集当前光线强度;通过PMW灯光调节电路,我们可以根据不同的光线亮度,进行3挡调节;通过人体红外检测当前是否有人;通过不同光线情况下使用PWM脉冲电路进行调节…

Knife4j-的使用(详细教程)

文章目录 前言一、简介二、版本参考三、基本使用1. 导入相关依赖2. 比对效果3. 增强特性应用 四、Spring-Cloud 整合1. 项目准备2. 实现步骤2.1 依赖引入2.2 编写配置类2.2.1基础信息配置2.2.2 配置接口信息2.2.3 安全认证配置 2.3 常用注解的使用2.3.1 Api2.3.2 ApiOperation2…

【全方位解析】如何写好技术文章

前言 为何而写 技术成长:相对于庞大的计算机领域的知识体系,人的记忆还是太有限了,而且随着年龄的增大,记忆同样也会逐渐衰退,正如俗话所说“好记性不如烂笔头”。并且在分享博客的过程中,我们也可以和大…

OKCC呼叫中心的坐席监控功能有什么

最近很多客户都在跟我谈他们企业的电话客服工作量都非常大,虽然客服人员在服务时应该态度谦和,但是遇到难缠的客户,客服人员总有脾气忍不住的时候,言语上会带有情绪,这些客服人员会因为服务水平欠佳让客户不满意从而产…

【EXCEL】数据录入的快捷键和正确格式

目录 0.环境 1.内容概述 2.具体内容 2.1数据录入换行换列的快捷键(标准的数据输入方式) 2.2日期的正确格式和使用(标准日期格式与长日期) 2.2.1 标准日期 2.2.2 长日期 2.2.3 显示当前日期和时间的快捷键 2.3百分比的正确…

ChatGPT助力DevOps的优势与局限

一、前言 DevOps 是一种方法论,旨在提高软件开发和 IT 运营团队的协作和效率。DevOps 涉及各种任务和流程的自动化,例如规划、编码、测试、部署、监控和故障排除。然而,其中一些任务和流程仍然有大量任务需要人工手动处理,而这会…

C#基础--委托

C#基础–委托 C#基础–委托 简单说它就是一个能把方法当参数传递的对象,而且还知道怎么调用这个方法,同时也是粒度更小的“接口”(约束了指向方法的签名) 一、什么是委托,委托的本质是什么? 跟方法有点类似…

【2023 年第三届长三角高校数学建模竞赛】B 题 长三角新能源汽车发展与双碳关系研究 18页论文、数据和代码

【2023 年第三届长三角高校数学建模竞赛】B 题 长三角新能源汽车发展与双碳关系研究 18页论文、数据和代码 1 题目 《节能与新能源汽车技术路线图 2.0》提出至 2035 年,新能源汽车市场占比超过 50%,燃料电池汽车保有量达到 100 万辆,节能汽车…

【MySQL】MySQL在Centos7环境下安装

目录 一、卸载不要的环境 1.1、查看是否有安装mysql 1.2、关闭运行的程序 1.3、卸载安装 二、配置yum 源 2.1、下载yum 源 2.2 安装yum源 2.3 查看是否已经生效 三、安装mysql服务 四、启动服务 五、登录方法 方法一(不行就下一个) 方法二(不…

动态sql语句

1.1 动态sql语句概述 Mybatis 的映射文件中&#xff0c;业务逻辑复杂时&#xff0c; SQL是动态变化的&#xff0c;此时在前面的学习中 SQL 就不能满足要求了。 参考的官方文档&#xff1a; 1.2 动态 SQL 之<if> 根据实体类的不同取值&#xff0c;使用不同的 SQL语句…

浅谈自动化测试工具 Appium

目录 前言&#xff1a; 一、简单介绍 &#xff08;一&#xff09;测试对象 &#xff08;二&#xff09;支持平台及语言 &#xff08;三&#xff09;工作原理 &#xff08;四&#xff09;安装工具 二、环境搭建 &#xff08;一&#xff09;安装 Android SDK &#xff0…

和chatgpt学架构02-环境搭建

目录 1 安装vs code2 vs code功能介绍3 安装nodejs4 安装vue5 在vs code打开工程总结 我们在上一篇 技术选型 里咨询了chatgpt前后端的框架选择和数据库的选择。有了框架之后就需要选择合适的开发工具了&#xff0c;继续咨询一下chatgpt 我现在选型&#xff0c;前端使用vue&am…

将媒体公司资产迁移到 Amazon S3 的技术方案

随着媒体公司的发展&#xff0c;他们在仓库中积累了大量的旧磁带和未数字化的视频。这些资产可能很有价值&#xff0c;但以目前的形式很难访问和货币化。此外&#xff0c;将这些资产存储在仓库中既有风险又昂贵。 媒体企业可以通过将其资产迁移到云存储来解决这些问题&#xf…

Lua 批量修改文件夹下文件名

local s io.popen("dir C:\\Users\\lizhiyuan\\Desktop\\国家知识产权局ftp法律状态数据\\data /b/s") local filelist s:read("*a")local start_pos 0while 1 do_,end_pos,line string.find(filelist, "([^\n\r].xml)", start_pos)if not e…

Java List中通过对象属性排序,可实现多条件排序

直接上代码&#xff1a; import com.google.common.collect.Lists; import lombok.AllArgsConstructor; import lombok.Data;import java.util.Comparator; import java.util.List; import java.util.stream.Collectors;/*** List 对象属性排序*/Data AllArgsConstructor clas…

xml.etree.ElementTree

python使用 xml.etree.ElementTree包的时候&#xff0c;对xml中的空标签进行了简写&#xff0c;想恢复成正常模式怎么弄

(学习笔记-TCP连接断开)TCP四次挥手

TCP四次挥手过程 TCP断开连接是通过四次挥手实现的&#xff0c;双方都可以主动断开连接&#xff0c;断开连接后主机中的资源将被释放&#xff0c;四次挥手的过程如下&#xff1a; 客户端打算关闭连接时&#xff0c;会发送一个TCP首部FIN标志位为1的报文&#xff0c;也就是FIN报…

基础语言模型LLaMA

LLaMA包含从7B到65B参数的基础语言模型集合。Meta在数万亿个tokens上训练了模型&#xff0c;LLaMA-13B在大多数基准测试中优于GPT-3&#xff08;175B&#xff09;。 来自&#xff1a;LLaMA: Open and Efficient Foundation Language Models 目录 背景概述方法预训练数据架构Op…

LangChain + Embedding + Chromdb,关联使用ChatGLM的本地搭建训练平台教程

一.介绍 OpenAI 在国内用户注册会遇到各种阻力&#xff0c;目前可行的方法是使用本地数据集的功能实现联网搜索并给出回答&#xff0c;提炼出TXT、WORD 文档里的内容。 现在主流的技术是基于强大的第三方开源库&#xff1a;LangChain 。 文档地址&#xff1a;&#x1f99c;…

基于单片机的教室智能照明台灯控制系统的设计与实现

功能介绍 以51单片机作为主控系统&#xff1b;LCD1602液晶显示当前时间、年月日、时分秒、前教室人数&#xff1b;2路红外探头用来感应当前教室进出人数&#xff1b;按键可以设置当前时间、自动手动模式、开启和关闭教室灯光时间&#xff1b;在手动模式下&#xff0c;可以通过按…