zhangliang 2 tygodni temu
rodzic
commit
089de3933c
1 zmienionych plików z 107 dodań i 19 usunięć
  1. 107 19
      README.md

+ 107 - 19
README.md

@@ -1,19 +1,107 @@
-整体流程:
-MQ 消息推送
-   ↓
-main.py 消费并生成线程
-   ↓
-handle_message() → 解析消息体(platform + mode)
-   ↓
-加载 user_list / rule_dict(数据库)
-   ↓
-执行 UniversalCrawler.run()
-   ↓
-1. 读取配置
-2. 请求视频接口
-3. 解析视频数据(字段映射)
-4. 构造 VideoItem
-5. 推送到 ETL MQ
-   ↓
-全部成功 → ack 消息
-失败 → 不 ack,MQ 自动重试
+
+# AutoScraperX
+
+一个基于 YAML 配置驱动的通用分布式爬虫系统,支持多 Topic 并发消费,按平台灵活执行爬虫逻辑,最终推送至 ETL 消费系统。
+
+---
+
+## 🧠 项目结构简介
+
+```bash
+AutoScraperX/
+├── main.py                           # 项目入口:监听 MQ 消息,调度 UniversalCrawler
+├── crawler_worker/
+│   ├── universal_crawler.py         # 通用爬虫主类,读取配置并执行爬虫逻辑
+│   └── rabbitmq_consumer.py         # 多线程消费 MQ 中的消息并执行任务
+├── configs/
+│   ├── spiders_config.yaml         # 各平台爬虫规则配置文件(含 JsonPath)
+│   └── topic_map.yaml              # topic 与平台名映射关系配置
+├── application/
+│   ├── common/                     # 各种工具模块(日志、GPT、FFmpeg、代理池、Feishu 等)
+│   ├── config/                     # 全局配置
+│   ├── mysql/redis/                # 数据库与缓存工具模块
+│   ├── messageQueue/               # MQ 消费/ACK 工具模块
+│   ├── functions/                  # 各类通用工具函数与日志记录
+│   ├── items/                      # 爬取的数据结构定义
+│   └── pipeline/                   # 数据处理与入库管道
+├── scheduler/
+│   └── scheduler_main.py           # 预留任务调度扩展入口(支持定时任务)
+├── utils/
+│   ├── config_loader.py            # YAML 配置加载工具
+│   └── project_paths.py            # 自动定位 config、log 路径等
+```
+
+---
+
+## 🚀 功能特性
+
+- ✅ 多 Topic 单进程并发监听消费(使用线程+异步)
+- ✅ 根据消息动态获取 platform/mode,并注入 user_list、rule_dict
+- ✅ YAML 驱动爬虫逻辑,无需重复开发代码
+- ✅ 请求支持自动重试、动态分页、字段抽取
+- ✅ 视频封装为标准 `VideoItem`,统一推送到 MQ
+- ✅ 任务执行成功后再确认 ACK,保证一致性
+
+---
+
+## 🧱 架构概览
+
+- **main.py**:监听多个 Topic,消费 MQ 消息,解析出平台并调度 `UniversalCrawler`
+- **UniversalCrawler**:核心爬虫逻辑,读取配置发送请求,抽取字段,封装数据项,交由 `pipeline` 处理
+- **PiaoQuanPipeline**:负责数据 ETL 入库、推送到 ETL MQ
+- **MQ 系统**:阿里云 MQ,支持按平台配置多个 Topic,消费完成再手动 ACK
+- **配置文件**:
+  - `spiders_config.yaml`:各平台请求方式、字段映射、分页等配置
+  - `topic_map.yaml`:多 Topic 映射(暂不再使用 platform 字段)
+
+---
+
+## 🛠 使用说明
+
+### 1. 启动项目
+
+```bash
+python main.py
+```
+
+> 程序将自动监听所有 Topic,消费消息后创建对应的爬虫任务并执行。
+
+---
+
+## 🧩 spiders_config.yaml 示例配置
+
+```yaml
+default:
+  base_url: http://api.xxx.com
+  request_timeout: 30[]()
+  headers:
+    {"Content-Type": "application/json"}
+
+benshanzhufu:
+  mode: recommend
+  path: /crawler/ben_shan_zhu_fu/recommend
+  method: post
+  request_body:
+    cursor: "1"
+  paging: true
+  max_pages: 5
+  etl_hook: "process_video_obj"
+  response_parse:
+    next_cursor: "$.data.next_cursor"
+    data_path: "$.data.data"
+    fields:
+      video_id: "$.nid"
+      video_title: "$.title"
+      play_cnt: 0
+      publish_time: "$.update_time"
+      video_url: "$.video_url"
+```
+
+---
+
+## 🧵 线程调度与消费机制
+
+- 每个 topic 启一个线程进行 MQ 消费
+- 每条消息创建一个 UniversalCrawler 实例,执行 `.run()`,完成后再 ACK
+- 失败或超时不会阻塞其他任务
+