# 项目概述 本项目是一个分布式任务处理系统,专注于从网页中提取数据并进行 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 create -p venv python=3.12 -y conda activate G:\code\upwork\zhang_crawl_bio\venv poetry install --no-root scrapling install ``` 手动修改 venv\Lib\site-packages\crawl4ai\async_crawler_strategy.py 文件中修改如下代码: ```python class BrowserManager: def __init__(self, browser_config: BrowserConfig, logger=None): ... if self.config.use_managed_browser: self.managed_browser = ManagedBrowser( ... cdp_url=self.config.cdp_url, # 👈 添加此行 ) ``` ``` ```shell # 如果 conda pack 无法打包的话,可能要安装: conda install --force-reinstall setuptools conda pack -p .\venv -o crawl_env.tar.gz Remove-Item -Path crawl_env -r 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 utils worker 使用说明.txt '-xr!*/pycache/*' '-xr!*__pycache__*' ui\fontend\dist ui\backend '-xr!ui\backend\output\*' '-xr!ui\backend\config.yaml' # 使用 tar 压缩可能更快(其实也没多快),Windows11 以上都支持 tar.gz 格式 tar -czvf google_crawler.tar.gz *.bat config database crawl_env download mylib script tests utils worker 使用说明.txt --exclude='*/__pycache__' # 测试用,排除指定文件,要加引号 D:\Program\7-Zip\7z.exe a -tzip -mmt -mx3 test.zip *.bat config ui\fontend\dist ui\backend\* -xr!ui\backend\output\* '-xr!ui\backend\config.yaml' mkdir -p z7test tar -xzf test.zip -C z7test Remove-Item -Path z7test -r Remove-Item -Path test.zip ```