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

news2024/11/26 2:33:24

文章目录

  • 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/scrapyd

vim /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.coloradmin.cn/o/770365.html

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

相关文章

Python 5类数据容器总结

数据容器简单分类: 是否支持下标索引 支持(序列类型):列表(list)、元组(tuple)、字符串(str)不支持(非序列类型):集合&…

论文解读: 2023-Lost in the Middle: How Language Models Use Long Contexts

大模型使用的关键在于Prompt,然而大模型存在幻觉现象,如何减少这种现象的发生成为迫切解决的问题。外部知识库LLM的方法可以缓解大模型幻觉,但是如何撰写Prompt才能发挥LLM的性能。下面介绍这篇论文说明上下文信息出现在Prompt什么位置使模型…

Python 算法基础篇之 Python 语言回顾:变量、条件语句、循环语句、函数等

Python 算法基础篇之 Python 语言回顾:变量、条件语句、循环语句、函数等 引言 1. 变量2. 条件语句3. 循环语句 a ) for 循环 b ) while 循环 4. 函数总结 引言 Python 是一种流行的编程语言,具有简洁而易读的语法。在学习算法时,了解 Python…

被B站用户高赞的广告文案:暴涨900万播放

今年6月,B站公布第一季度财报数据,B站日均活跃用户达9370万,月活3.15亿。在高月活的基础上,用户日均使用时长已经到了96分钟,日均视频播放量达41亿。 来源-B站 用户属性年轻、活跃度高已经成为B站典型的平台标签&…

Apikit 自学日记:私有云才有的测试文件库功能,该如何使用呢

在 APIkit 的私有云版本中,提供了测试文件库功能。不过目前该功能仅供私有云产品,线上SaaS产品不提供测试文件库功能 API自动化测试中可以添加文件参数。在这里统一管理所有测试文件。 在测试文件库界面,点击上传文件: 在私有云产…

【C++】STL反向迭代器模拟实现,迭代器适配器,迭代器类型简单介绍

反向迭代器 前言正式开始基本演示模拟实现的大致思路基本框架前置、--*重载->重载list和vector适配反向迭代器迭代器的类型库中reverse和sort模板参数中的迭代器reversesort 前言 本篇主要讲反向迭代器的模拟实现。 能够加深各位对泛型的理解。 前面我那篇string介绍里面…

Ubuntu学习笔记(二)——文件属性与权限

文章目录 前言一、用户与用户组1.用户(文件拥有者)2.用户组3.其他人 二、Linux用户身份与用户组记录文件1. /etc/passwd2. /etc/shadow3. /etc/group 三、文件属性与权限1. 查看文件属性的方法(ls)2.文件属性详细介绍2.1 权限2.2 …

Python多个if代码优化

一、背景 大量的if … elif…代码非常难看,也很难维护。扩展不太方便 二、优化方案 以下栗子展示不同的角色获取折扣信息。 1、正常写法 def discount_algorithm(user_role):if user_role admin:discount 0.1return discountelif user_role msp:discount 0.…

【protobuf】socket.io序列化和反序列化

1.背景 后台利用socket.io发送websocket消息&#xff0c;加密用到protobuf 2.反序列化时遇到问题 Traceback (most recent call last): File "D:/locust/Nigeria/test3.py", line 40, in <module> play.ParseFromString(decode_spin_str) google.proto…

Cesium 实战 - 通过 Blender 将模型组件拆解为独立子模型

Cesium 实战 - 通过 Blender 将模型组件拆解为独立子模型 拆分模型1.导入模型&#xff08;J15.glb&#xff09;2.拆分模型3.保存模型 完整代码在线示例 上篇博客介绍了 Cesium 实战 - AGI_articulations 扩展&#xff1a;模型自定义关节动作 这篇接着介绍一下&#xff0c;模型…

【Redis】高可用之三:集群(cluster)

本文是Redis系列第6篇&#xff0c;前5篇欢迎移步 【Redis】不卡壳的 Redis 学习之路&#xff1a;从十大数据类型开始入手_AQin1012的博客-CSDN博客关于Redis的数据类型&#xff0c;各个文章总有些小不同&#xff0c;我们这里讨论的是Redis 7.0&#xff0c;为确保准确&#xf…

YZ04:文本批量替换使用说明文档

【分享成果&#xff0c;随喜正能量】达摩祖师说&#xff1a;“不谋其前&#xff0c;不虑其后&#xff0c;不恋当今。”你內心安适&#xff0c;就会宠辱不惊&#xff0c;俯仰无愧&#xff0c;从一天到一年&#xff0c;从一年到一生&#xff0c;秒秒感受安详&#xff0c;活在至真…

MySQL-数据库读写分离(中)

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a; 小刘主页 ♥️努力不一定有回报&#xff0c;但一定会有收获加油&#xff01;一起努力&#xff0c;共赴美好人生&#xff01; ♥️学习两年总结出的运维经验&#xff0c;以及思科模拟器全套网络实验教程。专栏&#xf…

常见java知识点1

目录 1 什么是Spring框架&#xff1f;Spring框架有哪些主要模块&#xff1f; 2 使用Spring框架有什么好处&#xff1f; 3 Java常用的包&#xff08;列举六个&#xff09; 4 Arraylist 和 Linkedlist 的区别 5 HashMap和Hashtable的区别 6 Java中常见的…

vue-sticky简单使用(实现吸顶效果)

参考链接 vue-sticky&#xff1a;在页面滚动时将指定元素固定在窗口上的某个位置 生效条件如下&#xff1a; 1、父元素不能设置 overflow:hidden 或者 overflow:auto 属性 2、至少指定 top 、bottom 、left 、right 4 个值中的一个&#xff0c;否则只会处于相对定位 3、父元素…

OpenCVForUnity(六)图像的对比度和亮度

文章目录 前言公式讲解Unity嵌套循环实现使用convertTo实现亮度和对比度调整:伽马矫正 前言 图片处理中这也是非常常用的功能,下面我们一起来学习一下如何在OpenCVForUnity中修改图像的对比度亮度 图像处理中的常见算子可以将一个或多个输入图像转换为输出图像。这些变换包括点…

tdengine超级表创建

tdengine有官网文档&#xff0c;这里就把实际使用的SQL贴出来吧。 创建超级表&#xff1a; CREATE STABLE superTable(time TIMESTAMP, val double) TAGS (point varchar(100));执行SQL后会创建一个叫superTable的超级表。 建完超级表后再创建子表&#xff0c;SQL如下&#…

8、PHP访问权限配置与报错处理:You don‘t have permission to access this resource.

这是由于阿帕奇服务器的权限设置导致的。 解决办法&#xff1a; 1、由于我们之前已经设置了虚拟主机&#xff0c;我们在WAMPserver中&#xff0c;找到添加虚拟主机的配置文件的路径 2、打开这个文件&#xff0c;修改相应的虚拟主机的访问权限&#xff0c;Require后面改为all …

Cesium Terrain Builder (CTB) 简单使用_地形切片

Cesium Terrain Builder (CTB) 简单使用_地形切片 目录 Cesium Terrain Builder (CTB) 简单使用_地形切片 官网地址&#xff1a; winr&#xff08;cmd&#xff09;打开命令提示符工具运行&#xff1a; Create a GDAL Virtual Dataset (optional) Create Cesium Terrain fi…

CentOS系统下Docker安装部署Strapi

Nodejs 16 安装 移除旧版本的 node yum remove -y nodejs npm使用以下命令将存储库添加到系统 curl -fsSL https://rpm.nodesource.com/setup_16.x | sudo bash -配置存储库之后可以安装 yum install -y nodejs查看版本 node -v下载 yarn 包管理 curl -sL https://dl.yar…