零代码爬虫平台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…...
基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...
Razor编程中@Html的方法使用大全
文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...
MySQL:分区的基本使用
目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区(Partitioning)是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分(分区)可以独立存储、管理和优化,…...
通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器
拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件: 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...
论文阅读:Matting by Generation
今天介绍一篇关于 matting 抠图的文章,抠图也算是计算机视觉里面非常经典的一个任务了。从早期的经典算法到如今的深度学习算法,已经有很多的工作和这个任务相关。这两年 diffusion 模型很火,大家又开始用 diffusion 模型做各种 CV 任务了&am…...
Python 高级应用10:在python 大型项目中 FastAPI 和 Django 的相互配合
无论是python,或者java 的大型项目中,都会涉及到 自身平台微服务之间的相互调用,以及和第三发平台的 接口对接,那在python 中是怎么实现的呢? 在 Python Web 开发中,FastAPI 和 Django 是两个重要但定位不…...
__VUE_PROD_HYDRATION_MISMATCH_DETAILS__ is not explicitly defined.
这个警告表明您在使用Vue的esm-bundler构建版本时,未明确定义编译时特性标志。以下是详细解释和解决方案: 问题原因: 该标志是Vue 3.4引入的编译时特性标志,用于控制生产环境下SSR水合不匹配错误的详细报告1使用esm-bundler…...
npm安装electron下载太慢,导致报错
npm安装electron下载太慢,导致报错 背景 想学习electron框架做个桌面应用,卡在了安装依赖(无语了)。。。一开始以为node版本或者npm版本太低问题,调整版本后还是报错。偶尔执行install命令后,可以开始下载…...
