Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Repository files navigation

TrendRadar · Windows 版

微博 / 知乎 / B 站热点聚合 + 情感趋势分析 —— Windows 一键安装,每小时自动更新 HTML 报告

Python License Last Commit Repo Size


本仓库是 TrendRadar 热点聚合工具的 Windows 分发打包:除了完整的 Python 核心(抓取 → 聚合 → 情感 → 趋势评分 → 单文件 HTML 报告),还附带 windows/ 目录下的一套安装与计划任务脚本,双击即可在 Windows 上完成部署,并用任务计划程序实现每小时自动抓取更新。架构思想借鉴 BettaFish(微舆)MiroFish 的多智能体协作设计。

✨ 亮点

🪟 Windows 一键部署

install_windows.bat 自动创建虚拟环境、装依赖、跑演示报告;run_now.bat 一键抓取并在浏览器打开最新报告——全程不需要手动敲 pip。

⏰ 每小时自动更新

register_hourly_task.bat 注册 Windows 计划任务 TrendRadar Hourly:每小时跑一次、失败自动重试 3 次、关机恢复后自动补跑,reports\latest.html 永远是最新热榜。

🧠 情感后端可插拔

默认 SnowNLP(离线、零费用);可选 Ollama 本地 LLM(qwen2:7b)或 智谱 GLM-4-Flash(API Key 走 Windows 环境变量,不写进配置文件)。

📊 单文件 HTML 报告

每次运行产出独立 HTML:情感饼图、平台分布、TOP10 横向柱图、关键词云、事件卡片(含跨平台声量与原始链接),浏览器打开即可分享。

🔄 工作流程

flowchart TD
    subgraph SCH["⏰ Windows 计划任务(每小时)"]
        T["TrendRadar Hourly<br/>失败重试 ×3 · 互斥锁防重入"]
    end

    subgraph CRAWL["🕷️ Crawlers 抓取层"]
        W["微博热搜<br/>HTML 解析 GBK"]
        Z["知乎热榜<br/>JSON API"]
        B["B 站热门<br/>JSON API"]
    end

    subgraph FORUM["🗣️ Forum 协调器"]
        CL["Cluster Agent<br/>jieba + Jaccard ≥ 0.35 聚合"]
        SE["Sentiment Agent<br/>snownlp / ollama / zhipu"]
        TR["Trend Agent<br/>热度 × 情感强度 + 平台覆盖加成"]
    end

    REP["📄 Reporter:IR → 单文件 HTML<br/>reports/latest.html"]

    T --> W & Z & B
    W & Z & B --> CL --> SE --> TR --> REP
Loading

单平台抓取失败不影响其他平台;所有步骤的日志写入 logs\trendradar.log(定时任务日志在 logs\hourly.log)。

🚀 快速上手(Windows)

1. 解压本仓库到固定位置,例如 C:\TrendRadar
2. 安装 Python 3.10–3.12,勾选 "Add Python to PATH"
3. 双击 windows\install_windows.bat      # 建虚拟环境 + 装依赖 + 演示报告
4. 双击 windows\run_now.bat              # 立即抓取一次,浏览器打开报告

开启每小时自动更新:

右键 windows\register_hourly_task.bat → 以管理员身份运行
(取消:运行 windows\unregister_hourly_task.bat)

报告与日志位置:

reports\latest.html      # 最新报告(每次运行覆盖)
reports\report-*.html    # 历史报告(按时间戳)
logs\hourly.log          # 定时任务日志
logs\trendradar.log      # 运行日志

通用 Python 用法(macOS / Linux 同样适用)

pip install -r requirements.txt

python -m trendradar run                        # 按 config.yaml 全量跑
python -m trendradar demo                       # mock 数据演示,不连外网
python -m trendradar run --platforms weibo_hot  # 只跑微博
python -m trendradar run --keywords 比亚迪,高考  # 临时关键词过滤
python -m trendradar run --export-csv data/raw.csv  # 同时导出原始数据

📁 目录结构

├── windows/                        # Windows 部署脚本(本仓库的核心增量)
│   ├── install_windows.bat         # 一键安装:venv + 依赖 + 演示报告
│   ├── run_now.bat                 # 立即抓取并打开报告
│   ├── register_hourly_task.bat    # 注册每小时计划任务(管理员)
│   ├── register_hourly_task.ps1    # 计划任务注册逻辑(PowerShell)
│   ├── run_hourly.ps1              # 每小时执行体:互斥锁 + 日志 + 退出码
│   ├── set_zhipu_key.bat           # 交互式设置 ZHIPU_API_KEY 环境变量
│   └── unregister_hourly_task.bat  # 取消计划任务
├── trendradar/                     # Python 核心包
│   ├── cli.py                      # CLI 入口:run / demo 子命令
│   ├── config.py / logger.py / models.py
│   ├── crawlers/                   # weibo.py · zhihu.py · bilibili.py(统一 BaseCrawler)
│   ├── analyzers/                  # cluster / sentiment / trend 三 Agent + forum 协调器
│   │   └── backends/               # 情感后端:snownlp / ollama / zhipu
│   ├── reporters/                  # ir.py 中间表示 + renderer.py 渲染 + charts.py 图表
│   └── tests/                      # mock_data.py(demo 模式数据源)
├── config.yaml                     # 全部可调项(见下表)
├── requirements.txt / pyproject.toml
├── WINDOWS-README.md               # Windows 部署的详细中文手册
├── reports/latest.html             # 最近一次生成的报告
└── LICENSE                         # MIT

⚙️ 配置要点(config.yaml)

字段 默认 说明
keywords [] 只聚合包含这些关键词的事件;留空聚合全部
platforms 三平台全开 weibo_hot / zhihu_hot / bilibili_hot,设 false 即跳过
max_items_per_platform 50 每平台最多抓取条数
sentiment_backend snownlp snownlp(离线免费)/ ollama(本地 LLM)/ zhipu(智谱 API)
open_report_after_run false 定时任务务必保持 false,避免每小时弹浏览器
output_dir reports 报告输出目录

切换智谱情感后端:先运行 windows\set_zhipu_key.bat 写入环境变量,再把 sentiment_backend 改为 zhipu——不要把 API Key 直接写进 config.yaml

⚠️ 局限与说明

  • 计划任务仅在电脑开机且用户登录期间运行;关机期间的窗口会在恢复后由任务计划程序补跑一次。
  • 当前版本展示每次抓取时刻的最新热榜,不包含跨小时的升温/降温历史曲线(time_window_hours 目前是占位配置)。
  • SnowNLP 对短文本的情感判断约 70–75% 准确率;需要更高准确率请切换到 ollama(本地算力)或 zhipu(API 额度)。
  • 三个平台爬虫是顺序执行而非并发;单平台失败不影响整体,失败部分在日志中可见。
  • 请遵守各平台 robots.txt 与 ToS,本工具仅供学习与研究使用。

🙏 致谢

  • BettaFish(微舆) —— 多 Agent 舆情分析系统,架构设计参考(借鉴思路,代码独立实现)
  • MiroFish —— 群体智能预测引擎,Agent 协作思想参考
  • 上游主仓库:TrendRadar

TrendRadar-Windows · MIT License · 报告与日志均为本地生成,无任何数据上传
详细 Windows 部署手册见 WINDOWS-README.md

About

Cross-platform packaging of TrendRadar hot-trend aggregator for Windows distribution

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages