# 项目概述
本项目是一个分布式任务处理系统,专注于从网页中提取数据并进行 HTML 转换。它采用模块化设计,支持多机分布部署,确保任务的可追踪性和实时性。
## 技术栈
- **编程语言**: Python
- **任务调度**: Celery
- **数据存储**: SQLite
- **HTML 转换**: Pandoc, 自定义转换器
- **搜索引擎集成**: 浏览器驱动(基于 DrissionPage 和 ChromiumPage)
- **网络支持**: 解决 Cloudflare 人机验证 ; 自建代理池
## 功能特点
1. **分布式任务处理**:
- 使用 Celery 实现分布式任务调度。
- Worker 可在多台机器上部署,支持长时间运行的任务。
2. **HTML 转换**:
- 提供基础类 `ConverterBase`,用于处理 HTML 转换任务。
- 支持提取内容、修复链接、过滤 Markdown 、转换成 docx 等功能。
3. **谷歌搜索功能**:
- 使用自定义浏览器驱动(基于 `DrissionPage` 和 `ChromiumPage`)模拟浏览器行为。
- 支持动态代理配置和无头模式。
- 通过 XPath 定位搜索框并输入关键词。
- 处理分页逻辑,支持滚动加载和点击“下一页”按钮。
- 提取搜索结果的标题、URL 和内容,并存储到数据库中。
- 支持保存 HTML 页面以供后续分析。
4. **数据库交互**:
- 使用 SQLModel 与 SQLite 数据库交互,存储和检索搜索结果及转换结果。
5. **日志记录**:
- 使用自定义日志工具记录关键操作,便于排查问题。
## 项目结构
```
.
├── config/ # 配置文件
├── database/ # 数据库相关代码
├── tests/ # 测试代码
├── utils/ # 工具类和辅助函数
├── worker/ # 核心业务逻辑
│ ├── celery/ # Celery 任务定义
│ ├── html_convert/ # HTML 转换模块
│ └── search_engine/ # 浏览器驱动
└── readme.md # 项目说明文档
```
## 价值亮点
- **高内聚低耦合**: 模块间依赖关系清晰,易于扩展。
- **实时性与任务恢复**: 支持任务进度的实时监控和失败点恢复。
- **灵活的数据处理**: 支持多种数据源和转换方式,适应不同需求。
## 开始使用
1. 安装依赖:
```bash
poetry install
```
2. 启动 Celery Worker:
```bash
celery -A worker.celery.app worker --loglevel=info
```
3. 运行主程序:
```bash
python main.py
```
# pack
```shell
conda pack -n crawl_env -o crawl_env.tar.gz
Remove-Item -Path crawl_env
mkdir -p crawl_env
tar -xzf crawl_env.tar.gz -C crawl_env
Remove-Item -Path crawl_env.tar.gz
D:\Program\7-Zip\7z.exe a -tzip -mmt -mx3 google_crawler.zip *.bat config database crawl_env download mylib script tests utils worker 使用说明.txt -xr!*/pycache/*
# 使用 tar 压缩可能更快(其实也没多快),Windows11 以上都支持 tar.gz 格式
tar -czvf google_crawler.tar.gz *.bat config database crawl_env download mylib script tests utils worker 使用说明.txt --exclude='*/__pycache__'
```