#爬虫#容器化#云原生#可视化

目录

一、易采集easyspider接入mysql集成Dataease数据可视化

1. easyspider使用

1.1 提取数据(核心)

1.2 点击元素(核心)

1.3 循环配置(核心)

1.4 爬取zabbix告警(示例)

2、easyspider配置mysql

2.1 mysql运行

2.2 mysql创库授权

2.3 mysql链接easyspider的坑

3. mysql触发器字段清洗

3.1 mysql

4. dataease大屏集成mysql

4.1 面板制作

4.2 大屏制作

5. 1Panel平台安装管理mysql&dataease

5.1 安装1panel,mysql,dataease

5.2 注意事项

二、elk系统和监控系统集成Dataease构建可视化Datacenter

1. K8s平台部署

1.1 k8s集群搭建

1.2 k8s搭建后端存储平台

1.3 k8s搭建前后端维护可视化平台

2. K8s平台部署监控

2.1 k8s部署zabbix

2.1 k8s部署grafana

2.3 k8s部署elk日志分析系统

3 k8s部署可视化数据中心

3.1 k8s部署webhook接入监控分析数据

3.2 k8s部署数据库接入webhook数据源

3.3 k8s部署Dataease

3.4 dataease接入pro和zabx构建监控Datacenter

3.5 dataease接入elk构建日志分析Datacenter


一、易采集easyspider接入mysql集成Dataease数据可视化

1. easyspider使用

易采集EasySpider是开源、免费且无广告的可视化网络爬虫工具。工具支持跨平台运行(Windows、MacOS、Linux),基于图形化界面,用户无需编写代码能可快速设计和执行爬虫任务。工具具备多种高级功能,如动态调试、自定义插件、验证码识别、OCR识别、代理IP支持等,确保数据采集的安全性灵活性。易采集EasySpider提供丰富的教程资源,帮助用户快速上手。

1.1 安装easyspider

Github开源项目地址:GitHub - NaiboWang/EasySpider: A visual no-code/code-free web crawler/spider易采集:一个可视化浏览器自动化测试/数据采集/爬虫软件,可以无代码图形化的设计和执行爬虫任务。别名:ServiceWrapper面向Web应用的智能化服务封装系统。https://github.com/NaiboWang/EasySpider

选择适合操作系统的release安装包(windows解压即用):

1.2 提取数据(核心)

提取数据阶段需要针对xpath元素进行处理,特别是数据格式,方便后期存入后端数据库

1.2.1 javascript处理时间类型字段

使用JavaScript脚本对采集的字段进行修正和初步清洗,注意:javascript不能修改html的元素

return arguments[0].innerHTML
  // 先移除末尾的符号和空格
  .replace(/[•·∙]\s*$/, '')
  // 转换为数据库兼容的 YYYY-MM-DD HH:MM:SS 格式字符串
  .replace(/(\d{4})\s*年\s*(\d{1,2})\s*月\s*(\d{1,2})\s*日/, (_, y, m, d) => {
    // 补零确保格式正确
    const month = String(m).padStart(2, '0');
    const day = String(d).padStart(2, '0');
    // 返回数据库可直接解析的时间字符串
    return `${y}-${month}-${day} 00:00:00`;
  });
1.2.2 javascript点击子页面,方便工作流数据采集流程就一次,但页面可以多个

#提取该元素数据针对该元素执行一段JavaScript脚本(适合子页面采集):

// 通过XPath查找元素并点击
const xpath = '/html/body/div[1]/div[3]/div/div[1]/div[1]/ul/li[1]/a/span';
const element = document.evaluate(xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;

// 找到元素则点击
if (element) element.click();
else console.error('未找到元素');

#提取该元素数据针对该元素执行一段JavaScript脚本:(适合对元素值降噪去空格空行等):

function removeEmptySpaces() {
    let cleaned = arguments[0].replace(/>[\s\n\r]+</g, '><'); 
    cleaned = cleaned.trim();
    return cleaned;
}

#采集内容类型:决定你采集的是html的什么内容,包括元素本身或文本

#采集内容类型:(针对该元素的)Javascript代码返回值,需以return开头

(针对该元素的)Javascript代码:下述实现对采集的arguments[0].innerText,也是上述xpath对应的html中“/html/body/div[1]/div[3]/div/div[2]/div[2]/div/form/div/div[2]/div/table/tbody”里面的内容二次处理,分割,去空格,加制表符,去换行,自定义加换行

return arguments[0].innerText.replace(/\r\n|\n/g, '\t').replace(/编辑目录配额/g, '\n').split('\n').filter(item => item.trim() !== '').join('\n');

1.2.3 添加自定义字段,和采集的数据组合到一起导出,例如下述的字段:采集时间

在JavaScript(也可以不针对该元素,直接写return JS代码即可)/系统命令/Python代码:

return new Date().toLocaleString()

1.3 点击元素(核心)

用途主要针对翻页操作以及打开子页面,属于数据采集流程的前置步骤

1.4 循环配置(核心)

使用相对循环内的XPATH和path,在xpath:/html/body/div[2]/div/div[1]/div/div[1]/article/a/div/div[1]中article后面没有[]就可以实现匹配所有,如果是相对循环内的XPATH就不是fullxpath

1.5 OCR图片识别功能(用于识别验证码,识别图片中文字)

1.5.1 windows环境下安装Tesseract-OCR与python集成

参考博客文章:Tesseract-OCR下载和安装,Python-OCR使用-CSDN博客

1.6 windows定时任务执行

1.6.1 生成powershell脚本内容,调用easyspider程序

#点击获得任务执行ID

#点击使用命令行执行任务

1.6.2 创建powershell脚本任务:

任何路径下:创建easyspider.ps1文件,必须以.ps1结尾命名

将上述点击使用命令行执行任务生成的执行任务说明内容粘贴进文件中。(记事本编辑即可)

其中:

 --ids [15]    表示任务ID号

--user_data 0   表示如果以带用户信息模式,所引用的存储信息的目录,0代表非用户信息模式

--read_type local   表示是否需要提前手动运行easyspider于后台中,local:不需要,remote:需要

1.6.3 放行PowerShell运行脚本执行策略

详细请参考:问题:PowerShell运行ps1文件时闪退,如何排查?_编程语言-CSDN问答


PS C:\WINDOWS\system32> Get-ExecutionPolicy
Restricted
PS C:\WINDOWS\system32> Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

执行策略更改
执行策略可帮助你防止执行不信任的脚本。更改执行策略可能会产生安全风险,如 https:/go.microsoft.com/fwlink/?LinkID=135170
中的 about_Execution_Policies 帮助主题所述。是否要更改执行策略?
[Y] 是(Y)  [A] 全是(A)  [N] 否(N)  [L] 全否(L)  [S] 暂停(S)  [?] 帮助 (默认值为“N”): Y
PS C:\WINDOWS\system32> Get-ExecutionPolicy
RemoteSigned
PS C:\WINDOWS\system32>
1.6.4 填写windows任务计划程序配置

#创建任务

1.7 爬取zabbix告警(示例)

2、easyspider配置mysql

2.1 mysql运行

docker run -d --name mysqlDB -p 3307:3306 --network 1panel-network -v /opt/1panel/opt/1panel/apps/mysql/mysql/conf:/etc/mysql/conf.d -v /opt/1panel/opt/1panel/apps/mysql/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=111111 registry.cn-qingdao.aliyuncs.com/dataease/mysql:8.4.5

2.2 mysql创库授权

-- 创建datacenter数据库,指定字符集为utf8mb4(支持所有字符)
CREATE DATABASE IF NOT EXISTS datacenter
  CHARACTER SET utf8mb4
  COLLATE utf8mb4_unicode_ci;

-- 授予root用户对datacenter数据库的所有权限(包括管理权限)
-- 允许从任何主机连接(%表示所有主机,本地连接可改为localhost)
GRANT ALL PRIVILEGES ON datacenter.* TO 'root'@'%' WITH GRANT OPTION;

-- 授予root用户全局超级权限(可选,用于数据库级别的高级操作)
GRANT SUPER ON *.* TO 'root'@'%' WITH GRANT OPTION;

-- 刷新权限使配置立即生效
FLUSH PRIVILEGES;
	
1. 查询数据库级权限(某用户对某数据库的权限)
sql
-- 查看指定用户对指定数据库的权限
SELECT 
  User, 
  Host, 
  Db,
  Select_priv, Insert_priv, Update_priv, Delete_priv,
  Create_priv, Drop_priv, Grant_priv
FROM mysql.db 
WHERE User = '用户名' AND Db = '数据库名';

-- 示例:查看 root 对 datacenter 库的权限
SELECT 
  User, Host, Db,
  Select_priv, Insert_priv, Update_priv, Delete_priv,
  Create_priv, Drop_priv, Grant_priv
FROM mysql.db 
WHERE User = 'root' AND Db = 'datacenter';
2. 查询用户全局权限(用户的所有全局权限)
sql
-- 查看指定用户的全局权限
SELECT 
  User, 
  Host,
  Select_priv, Insert_priv, Update_priv, Delete_priv,
  Create_priv, Drop_priv, Super_priv, Grant_priv
FROM mysql.user 
WHERE User = '用户名';

-- 示例:查看 root 用户的全局权限
SELECT 
  User, Host,
  Select_priv, Insert_priv, Update_priv, Delete_priv,
  Create_priv, Drop_priv, Super_priv, Grant_priv
FROM mysql.user 
WHERE User = 'root';
3. 查询表级权限(某用户对某表的权限)
sql
-- 查看指定用户对指定表的权限
SELECT 
  User, 
  Host, 
  Db, 
  Table_name,
  Table_priv,  -- 表级权限(如 SELECT, INSERT 等)
  Column_priv  -- 列级权限(若有单独设置)
FROM mysql.tables_priv 
WHERE User = '用户名' AND Db = '数据库名' AND Table_name = '表名';

-- 示例:查看 root 对 datacenter 库中 test 表的权限
SELECT 
  User, Host, Db, Table_name, Table_priv, Column_priv
FROM mysql.tables_priv 
WHERE User = 'root' AND Db = 'datacenter' AND Table_name = 'test';

2.4 easyspider保存导出格式为数据库

选择导出数据格式为:MYSQL数据库后会自动在easyspider的工作目录下生成mysl_config.json配置文件,按照实际情况修改配置保存即可。

2.3 mysql连接easyspider的坑

如果在mysql_config.json格式都正确,信息都正确,easyspider运行时候仍然报错mysql_config.json配置文件配置错误,连接mysql失败,那就需要重启mysql那台机器了。

3. mysql触发器字段清洗

3.1 mysql

触发器实现功能:将网页元素(存入mysql的photo字段base64编码):<div class="blog-background" style="background-image: url(&quot;data:image/jpeg;base64,/9j/2wCEAAEBAQEBuV0r//Z&quot;);"></div>修改为:<img scr="data:image/jpeg;base64,/9j/2wCEAAEBAQEBuV0r//Z">

DELIMITER $$

-- 删除旧触发器
DROP TRIGGER IF EXISTS before_bigdata_insert;
DROP TRIGGER IF EXISTS before_bigdata_update;

-- 插入时触发:先统一转义字符,再提取base64
CREATE TRIGGER before_bigdata_insert
BEFORE INSERT ON datacenter.bigdata
FOR EACH ROW
BEGIN
  IF NEW.photo LIKE '%data:image/jpeg;base64,%' THEN
    -- 步骤1:将 &quot; 统一替换为 ",消除转义差异
    SET @normalized_str = REPLACE(NEW.photo, '&quot;', '"');
    
    -- 步骤2:提取base64内容(到第一个 " 为止)
    SET @base64_part = SUBSTRING_INDEX(
      SUBSTRING_INDEX(@normalized_str, 'data:image/jpeg;base64,', -1),
      '"', 1  -- 此时的 " 已包含原 &quot; 转换后的情况
    );
    
    -- 步骤3:重建img标签
    SET NEW.photo = CONCAT('<img src="data:image/jpeg;base64,', @base64_part, '">');
  END IF;
END$$

-- 更新时触发:相同逻辑
CREATE TRIGGER before_bigdata_update
BEFORE UPDATE ON datacenter.bigdata
FOR EACH ROW
BEGIN
  IF NEW.photo LIKE '%data:image/jpeg;base64,%' THEN
    SET @normalized_str = REPLACE(NEW.photo, '&quot;', '"');
    SET @base64_part = SUBSTRING_INDEX(
      SUBSTRING_INDEX(@normalized_str, 'data:image/jpeg;base64,', -1),
      '"', 1
    );
    SET NEW.photo = CONCAT('<img src="data:image/jpeg;base64,', @base64_part, '">');
  END IF;
END$$

DELIMITER ;

4. dataease大屏集成mysql

4.1 面板制作

4.2 大屏制作

5. 1Panel平台安装管理mysql&dataease

5.1 安装1panel,mysql,dataease

安装1panel

docker run -d --name 1panel --network host  --restart always -v /var/run/docker.sock:/var/run/docker.sock   -v /var/lib/docker/volumes:/var/lib/docker/volumes -v /opt/1panel/:/opt/1panel -e TZ=Asia/Shanghai docker.1ms.run/moelin/1panel:latest

安装mysql和dataease,直接通过界面商店安装,需要先准备好镜像,再修改docker-compose.yml即可,点击已安装应用的文件夹图标可以找到对应的应用docker-compose文件

5.2 注意事项

二、elk系统和监控系统集成Dataease构建可视化Datacenter

1. K8s平台部署

1.1 k8s集群搭建

1.2 k8s搭建后端存储平台

1.3 k8s搭建前后端维护可视化平台

2. K8s平台部署监控

2.1 k8s部署zabbix

2.1 k8s部署grafana

2.3 k8s部署elk日志分析系统

3. k8s部署可视化数据中心

3.1 k8s部署webhook接入监控分析数据

3.2 k8s部署数据库接入webhook数据源

3.3 k8s部署Dataease

3.4 dataease接入pro和zabx构建监控Datacenter

3.5 dataease接入elk构建日志分析Datacenter

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐