# low-code-spider
**Repository Path**: tfgzsdgit/low-code-spider
## Basic Information
- **Project Name**: low-code-spider
- **Description**: 低代码爬虫平台,学习自https://gitee.com/ssssssss-team/spider-flow。
前端在另一个项目:spider-frontend
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 6
- **Created**: 2024-10-31
- **Last Updated**: 2024-10-31
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## introduction
以流程图的方式定义爬虫,组件可复用,高度灵活,可配置。
>
随手玩玩就行
## 项目特性
- 支持redis实现url去重
- 支持CSV文件写入和下载
- 支持MySQL写入
- 支持xpath提取
- 支持cookie自动管理
- 支持自定义函数功能(两种表达式函数)
- 支持日志在线输出,日志本地存储和下载
- 支持定时任务
- 支持历史流程图恢复

## 项目部分截图
### 爬虫[流程图]列表

### 爬虫测试

### Gitee GVIP项目列表爬取结果

### 定时任务
#### 开机扫描定时任务

### 数据源

### 日志

### CSV文件管理

### 帮助文档

### 技术架构
各个层的技术构成(服务层至少部分)

## ps|todo
1. Future中的result有什么用 [解决]
2. QuartzJobBean类是什么,有啥用[定时任务]
3. redis貌似没啥用,刚学的,用上了
4. 前端在线测试的日志窗口用了element-plus的普通表格,数据量大时很卡,可能后端WebSocket写完了,但是前端还要好几分钟
5. 线程池还存在问题,提交任务不执行(看起来像是满了,但实际没任务)
6. 学习练手的项目、、、
```
以下没啥用~~~
```
## 流程设计
### 页面抓取流程(demo,仅做演示)
1. 设置url,以及一些请求的必要参数
2. 发送请求,获取响应
3. 获取响应文本,写入html文件(状态码另说)
### 页面解析
1. 读取文件,获取html字符串
2. 用jsoup解析html字符串得到一个解析器对象
3. 通过该解析器对象进行特定的一系列解析操作
## 需求列表以及进度详情
### 整体框架
数据模型
- 数据库实体类
User
Flow
Task
Datasource
- 工具实体
任务流框架
- [x] 单任务多线程执行流
- [x] 父子线程池提交以及任务执行
- [x] 运行前后listener
- [x] request执行策略(timeout和delay的关系)
logback日志框架
- [x] fileAppender
- [x] webSocketAppender
### 具体实现
shapeExecutor
- [x] RequestExecutor
- [x] StartExecutor
- [x] VariableExecutor
- [x] OutputExecutor
functionExecutor
- [x] StringExecutor
- [ ] RegexExecutor
- [ ] SQLExecutor
- [ ] ...Executor
service类
- [x] UserService
- [x] FlowService
- [x] TaskService
- [x] DataSourceService
utils类
- 流程图工具类
- [x] loadJsonFromString(json):SpiderNode
- 文件工具类
- [x] readLogs:List
- [x] createLog:OutputStream
* datasource工具类
- [x] getDataSource:Datasource
- 表达式工具类
- [x] execute(expression,variables):Object [引用别人的]
- Executor工具类
- [x] get(shape):ShapeExecutor
- 文本分析工具类