本仓库是 TrendRadar 热点聚合工具的 Windows 分发打包:除了完整的 Python 核心(抓取 → 聚合 → 情感 → 趋势评分 → 单文件 HTML 报告),还附带 windows/ 目录下的一套安装与计划任务脚本,双击即可在 Windows 上完成部署,并用任务计划程序实现每小时自动抓取更新。架构思想借鉴 BettaFish(微舆) 与 MiroFish 的多智能体协作设计。
|
|
|
|
默认 SnowNLP(离线、零费用);可选 Ollama 本地 LLM(qwen2:7b)或 智谱 GLM-4-Flash(API Key 走 Windows 环境变量,不写进配置文件)。 |
每次运行产出独立 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
单平台抓取失败不影响其他平台;所有步骤的日志写入 logs\trendradar.log(定时任务日志在 logs\hourly.log)。
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 # 运行日志
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
| 字段 | 默认 | 说明 |
|---|---|---|
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
详细 Windows 部署手册见 WINDOWS-README.md