零代码爬虫平台SpiderFlow的安装
什么是 Spider Flow ?
Spider Flow
是一个高度灵活可配置的爬虫平台,用户无需编写代码,以流程图的方式,即可实现爬虫。该工具支持多数据源、自动保存至数据库、任务监控、抓取JS
动态渲染页面、插件扩展(OCR
识别、邮件发送)等功能。
是不是和 n8n
有点像,不过目前 SpiderFlow
项目似乎已经停止开发了
构建镜像
如果你不想自己构建,可以跳过,直接阅读下一章节
官方提供了 Dockerfile
,但没有提供镜像,想用现成的,但是不确定代码是不是最新的,所以还是自己编了一下,发现这个 Dockerfile
存在两个问题:
- 现在已经找不到
java:8
镜像了;
Release
中并没有提供编译好的jar
包,需要自己从源代码编译;
所以老苏重新改写了 Dockerfile
,选择了多阶段构建方式
# 源码构建
FROM maven:3.6.0-jdk-11-slim AS builder
COPY . ./
RUN mvn clean install# 镜像打包
FROM openjdk:8-jdk-alpine
LABEL maintainer=laosu<wbsu2003@gmail.com> RUN mkdir -p /spider-flow
WORKDIR /spider-flow
EXPOSE 8088
COPY --from=builder ./spider-flow-web/target/spider-flow.jar ./
CMD sleep 30;java -Djava.security.egd=file:/dev/./urandom -jar spider-flow.jar
源码编译的时间还是比较长的
构建镜像和容器运行的基本命令如下👇
# 下载代码
git clone https://github.com/ssssssss-team/spider-flow.git# 或者加个代理
git clone https://ghproxy.com/github.com/ssssssss-team/spider-flow.git# 进入目录
cd spider-flow# 将 Dockerfile 放入当前目录# 构建镜像
docker build -t wbsu2003/spider-flow:v1 .
数据库设置
本文老苏演示了 2
种数据库安装方式:
- 一种是采用了群晖自带的
MariaDB 10
,对于群晖用户来说,会节省一点点空间;
- 另一种是独立安装数据库,
docker-compose
安装就采用了这种方式,更适合非群晖用户使用;
导入脚本
首先要下载 SQL
文件来完成数据库的初始化,不管采用上面方式,这一步都是必不可少的
SQL
文件的下载地址:https://github.com/ssssssss-team/spider-flow/blob/master/db/spiderflow.sql
在 phpMyAdmin
中 导入
下载的 spiderflow.sql
导入成功
创建用户
接下来在 phpMyAdmin
中创建名为 spiderflow
的用户
为便于说明,假设数据库密码为
123456
往常我们会勾选 创建与用户同名的数据库并授予所有权限
,但这次没有,因为数据库已经通过 spiderflow.sql
建好了
这次只是单纯的建了用户
所以我们还需要给用户操作对应的数据库的权限,找到 spiderflow
库
勾选 全选
所以根据上面的设置,最后得到的数据库相关的参数如下:
- 数据库主机:
192.168.0.197
,与群晖主机IP
一致; - 数据库端口:
3307
; - 数据库用户:
spiderflow
; - 数据库密码:
123456
; - 数据库库名:
spiderflow
;
安装
在群晖上以 Docker 方式安装。
在注册表中搜索 spider-flow
,选择第三个 wbsu2003/spider-flow
,版本选择 latest
。
端口
本地端口不冲突就行,不确定的话可以用命令查一下
# 查看端口占用
netstat -tunlp | grep 端口号
本地端口 | 容器端口 |
---|---|
3818 | 8088 |
环境
可变 | 值 |
---|---|
SPRING_DATASOURCE_DRIVER-CLASS-NAME | 数据库类型 |
SPRING_DATASOURCE_USERNAME | 数据库用户 |
SPRING_DATASOURCE_PASSWORD | 数据库密码 |
SPRING_DATASOURCE_URL | 数据库地址 |
SPRING_DATASOURCE_DRIVER-CLASS-NAME
:因为使用的是MySQL
或者MariaDB
,所以设为com.mysql.jdbc.Driver
;SPRING_DATASOURCE_USERNAME
:按前面的设置,应该为spiderflow
;SPRING_DATASOURCE_PASSWORD
:按前面的设置,应该为123456
;SPRING_DATASOURCE_URL
:是一个由多个参数拼接出来的地址,jdbc:mysql://<数据库IP>:<数据库端口>/<数据库库名>?useSSL=false&useUnicode=true&characterEncoding=UTF8&autoReconnect=true
,所以这里应该是jdbc:mysql://192.168.0.197:3307/spiderflow?useSSL=false&useUnicode=true&characterEncoding=UTF8&autoReconnect=true
更多的环境变量可以参考 application.properties
文件:https://github.com/ssssssss-team/spider-flow/blob/master/spider-flow-web/src/main/resources/application.properties
命令行安装
docker cli 安装
如果你熟悉命令行,可能用 docker cli
更快捷
# 运行容器
docker run -d \--name spider-flow \-p 3818:8088 \-e SPRING_DATASOURCE_DRIVER-CLASS-NAME=com.mysql.jdbc.Driver \-e SPRING_DATASOURCE_USERNAME=spiderflow \-e SPRING_DATASOURCE_PASSWORD=123456 \-e SPRING_DATASOURCE_URL="jdbc:mysql://192.168.0.197:3307/spiderflow?useSSL=false&useUnicode=true&characterEncoding=UTF8&autoReconnect=true" \wbsu2003/spider-flow
docker-compose 安装
也可以用 docker-compose
安装,将下面的内容保存为 docker-compose.yml
文件
这里使用了独立的
MySQL
数据库容器,而不是群晖自带的MariaDB
version: '3'services:spider-flow:image: wbsu2003/spider-flowcontainer_name: spider-flowrestart: alwaysports:- 3818:8088environment:- SPRING_DATASOURCE_DRIVER-CLASS-NAME=com.mysql.jdbc.Driver- SPRING_DATASOURCE_USERNAME=root- SPRING_DATASOURCE_PASSWORD=123456- SPRING_DATASOURCE_URL=jdbc:mysql://spider-mysql/spiderflow?useSSL=false&useUnicode=true&characterEncoding=UTF8&autoReconnect=true&allowPublicKeyRetrieval=truedepends_on:- spider-mysqlspider-mysql:image: mysql:8.0container_name: spider-mysqlrestart: alwaysvolumes:- ./data:/var/lib/mysql- ./sql:/docker-entrypoint-initdb.d:roenvironment:- MYSQL_ROOT_PASSWORD=123456- LANG=C.UTF-8- LC_ALL=C.UTF-8- TZ=Asia/Shanghai- MYSQL_INITDB_SKIP_TZINFO=truecommand: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
因为使用了
mysql:8.0
,相比前面的SPRING_DATASOURCE_URL
,这里新增了AllowPublicKeyRetrieval=True
,为 允许客户端自动从服务器请求公钥,否则数据库连接会被拒绝
然后执行下面的命令
# 新建文件夹 spiderflow 和 子目录
mkdir -p /volume1/docker/spiderflow/{data,sql}# 进入 spiderflow 目录
cd /volume1/docker/spiderflow# 将 docker-compose.yml 放入当前目录
# 将 spiderflow.sql 放入 /sql 目录# 一键启动
docker-compose up -d
根目录下文件
sql
目录下文件
运行
在浏览器中输入 http://群晖IP:3818
就能看到主界面
测试可以试试第三个 抓取每日菜价
具体使用方法,网上搜搜一大把,这里就略过了
参考文档
ssssssss-team/spider-flow: 新一代爬虫平台,以图形化方式定义爬虫流程,不写代码即可完成爬虫。
地址:https://github.com/ssssssss-team/spider-flow
spider-flow: 新一代爬虫平台,以图形化方式定义爬虫流程,不写代码即可完成爬虫。
地址:https://gitee.com/ssssssss-team/spider-flow
相关文章:

零代码爬虫平台SpiderFlow的安装
什么是 Spider Flow ? Spider Flow 是一个高度灵活可配置的爬虫平台,用户无需编写代码,以流程图的方式,即可实现爬虫。该工具支持多数据源、自动保存至数据库、任务监控、抓取 JS 动态渲染页面、插件扩展(OCR 识别、邮…...

Java 与其他编程语言:比较分析
Java 擅长可移植性和可靠性,Python 擅长通用性和简单性,JavaScript 擅长 Web 开发,C 擅长性能,Go 擅长效率。 在广阔的软件开发世界中,选择正确的编程语言对于任何项目的成功都至关重要。Java 是一种以其多功能性和可移…...

Linux性能分析工具介绍(二)--内存、进程、磁盘、IO分析
目录 一、引言 二、Linux性能分析工具介绍 ------>2.1、进程 ------>2.2、内存 ------>2.3、磁盘 ------>2.4、IO 一、引言 本章从内存、IO、进程的角度,分析linux系统的性能 二、Linux性能分析工具介绍 2.1、进程 2.1.1、top top命令可以动态查看进程…...

海外热门地区/国家常见主体证件示例
海外热门地区/国家常见主体证件示例(本页面内容较多,你可以通过CtrlF搜索) Overseas Popular Areas / Countries Examples of Common certificates (This page has more content, you can search by CtrlF) 中国香港…...

【阵列信号处理】空间匹配滤波器、锥形/非锥形最佳波束成形器、样本矩阵反演 (SMI) 研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

使用MPU6050计算方向盘角度
我给你们作了榜样、叫你们照着我向你们所作的去作。 ——【约翰福音13:15】 1.前言 前段时间接到一个项目需求:使用现有的陀螺仪MPU6050实现计算当前车辆的方向盘角度。 2.需求分析 MPU6050可获取三轴角速度和三轴加速度,并通过算法可以获得横滚角、…...

区块链实验室(13) - 在PBFT中节点的度与其流量的特征
前面若干实验说明了PBFT的耗时、流量与度的特征,见 区块链实验室(10) - 实例说明PBFT的共识过程, 区块链实验室(11) - PBFT耗时与流量特征, 区块链实验室(12) - 网络拓扑对PBFT共识流量的影响 同样的实验方案,在100个节点构成的无标度网络中完成100次交…...
C++——文件操作
一、文本文件 C中输入输出是通过流对象进行操作,对于文件来说写文件就是将内容从程序输出到文件,需要用到写文件流ofstream;而读文件就是将内容从文件输入到程序,需要用到读文件流ifstream;这两个文件流类都包含在头文…...
channel通道笔记
channel通道笔记 介绍 语法 1.一般使用make创建channel(常用) c : make(chan datatype),datatype是数据类型 2.直接显示声明,创建的值为空,一般没有太大意义 var c chan datatype 三种定义写法: 既可以收数据又可以发数据:chan datatype只可以收数据:chan <- datatype只可…...

无涯教程-Lua - 面向对象
面向对象编程(OOP)是现代编程时代中使用最广泛的编程技术之一。 OOP的特征 类(Class) - 类是用于创建对象的可扩展模板。 对象(Objects) - 它是类的实例,并为其分配了单独的内存空间。 继承(Inheritance) - 这是一个概…...
Java中的IOUtils是什么?
Java中的IOUtils是一个工具类,用于简化文件和流的操作。它提供了一些常用的方法,如复制文件、读取文件、写入文件等。 下面是一个简单的示例,演示如何使用IOUtils来复制文件: import org.apache.commons.io.FileUtils; import j…...

电源板(220V转3.3V)调试问题总
目录 现象: 问题可能的影响: 排查过程: 1.测试EC3,C2都在6V左右, 2.怀疑变压器的问题。 2.怀疑原边反馈控制芯片的问题。 3.怀疑后级电路的问题。 现象: 电源板输出3.28V输出正常。 但是测试前级电压…...
【webpack】一些零碎的知识点记录:eslint配置、source-map配置、devServer配置
文章目录 前言eslint安装配置设置规则 devtool设置js.map文件使用模式解释文件说明建议方案 devServer安装配置 前言 有些知识点不知道咋归类,就先暂时放在同一个文章里了。这里只记录配置方式,配置的东西是什么就不过多解释了,因为一般需要…...

VUE之JWT前后端分离认证,学生管理系统
参考资料: SpringBoot搭建教程 SpringCloud搭建教程 JWT视频教程 JWT官网 Vue视频教程 JWT视频参考资料、VUE视频资料,及前后端demo 特别有参考价值的JWT博客1 特别有参考价值的JWT博客2 cookie、localstorage和sessionStorage的区别1 cookie、localstorage和sessi…...

Go学习第五天
Golang中面向对象类的表示与封装 package mainimport "fmt"// 如果类名首字母大写,表示其他包也能够访问 type Hero struct {// 如果类的属性首字母大写,表示该属性是对外能够访问的,否则的话只能够类的内部访问Name stringAd …...
在vue项目中封装WebSockets请求
在Vue项目中封装WebSocket请求包括以下步骤: 1. 安装WebSocket库:首先,导入WebSocket库,例如vue-native-websocket或socket.io-client。根据项目需求选择适当的库,并根据官方文档进行安装和配置。 2. 创建WebSocket服务…...

Linux进程(二)
文章目录 进程(二)Linux的进程状态R (running)运行态S (sleeping)阻塞状态D (disk sleep)深度睡眠T(stopped)状态X(dead)状态Z&#x…...

使用pg_prewarm缓存PostgreSQL数据库表
pg_prewarm pg_prewarm 直接利用系统缓存的代码,对操作系统发出异步prefetch请求,在应用中,尤其在OLAP的情况下,对于大表的分析等等是非常耗费查询的时间的,而即使我们使用select table的方式,这张表也并不可能将所有…...

LeetCode 28题:找出字符串中第一个匹配项的下标
题目 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。 示例 1: 输入:haystac…...

flink+kafka+doris+springboot集成例子
目录 一、例子说明 1.1、概述 1.1、所需环境 1.2、执行流程 二、部署环境 2.1、中间件部署 2.1.1部署kakfa 2.1.1.1 上传解压kafka安装包 2.1.1.2 修改zookeeper.properties 2.1.1.3 修改server.properties 2.1.1.3 启动kafka 2.1.2、部署flink 2.1.2.1 上传解压f…...

JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...

K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...
Go 并发编程基础:通道(Channel)的使用
在 Go 中,Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式,用于在多个 Goroutine 之间传递数据,从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...
在golang中如何将已安装的依赖降级处理,比如:将 go-ansible/v2@v2.2.0 更换为 go-ansible/@v1.1.7
在 Go 项目中降级 go-ansible 从 v2.2.0 到 v1.1.7 具体步骤: 第一步: 修改 go.mod 文件 // 原 v2 版本声明 require github.com/apenella/go-ansible/v2 v2.2.0 替换为: // 改为 v…...
当下AI智能硬件方案浅谈
背景: 现在大模型出来以后,打破了常规的机械式的对话,人机对话变得更聪明一点。 对话用到的技术主要是实时音视频,简称为RTC。下游硬件厂商一般都不会去自己开发音视频技术,开发自己的大模型。商用方案多见为字节、百…...

RKNN开发环境搭建2-RKNN Model Zoo 环境搭建
目录 1.简介2.环境搭建2.1 启动 docker 环境2.2 安装依赖工具2.3 下载 RKNN Model Zoo2.4 RKNN模型转化2.5编译C++1.简介 RKNN Model Zoo基于 RKNPU SDK 工具链开发, 提供了目前主流算法的部署例程. 例程包含导出RKNN模型, 使用 Python API, CAPI 推理 RKNN 模型的流程. 本…...