Geen omschrijving

zhangliang 4715ef3c5e first commit 10 maanden geleden
application 4715ef3c5e first commit 10 maanden geleden
configs 4715ef3c5e first commit 10 maanden geleden
crawler_worker 4715ef3c5e first commit 10 maanden geleden
pipelines 42e9e11fbd first commit 10 maanden geleden
scheduler 42e9e11fbd first commit 10 maanden geleden
utils 4715ef3c5e first commit 10 maanden geleden
.gitignore 42e9e11fbd first commit 10 maanden geleden
README.md 86f01a6b8f first commit 10 maanden geleden
main.py 4715ef3c5e first commit 10 maanden geleden

README.md

AutoScraperX

一个基于 YAML 配置驱动的通用分布式爬虫系统,支持多 Topic 并发消费,按平台灵活执行爬虫逻辑,最终推送至 ETL 消费系统。


🧠 项目结构简介

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. 启动项目

python main.py

程序将自动监听所有 Topic,消费消息后创建对应的爬虫任务并执行。


🧩 spiders_config.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
  • 失败或超时不会阻塞其他任务