# 微博热点新闻抓取与简报生成方法论 ## 执行摘要 本报告研究微博热点新闻抓取与简报生成的技术方案,覆盖热搜与热点新闻区别、API接口、详情页爬取、图片存储和简报生成五大维度。 --- ## 1. 热搜榜 vs 热点新闻的区别 | 维度 | 热搜榜 | 热点新闻 | |------|--------|----------| | 入口位置 | 搜索栏右侧"热搜" | 首屏"热点"标签 | | 排名依据 | 用户搜索热度 | 实时热点+编辑推荐 | | 内容类型 | 话题/事件 | 新闻事件 | | 更新频率 | 实时 | 分钟级 | | 典型内容 | 娱乐话题、社会事件 | 突发新闻、时政要闻 | ### 热点新闻特点 - **编辑推荐**:有编辑人工干预 - **时效性强**:聚焦当下正在发生的事件 - **新闻属性更强**:偏重正式新闻内容 - **图片更多**:常配有多图或视频 --- ## 2. 热点新闻 API 接口 ### 热点新闻数据源 | 端点 | 用途 | 认证 | 可用性 | |------|------|------|--------| | `https://m.weibo.cn/api/index/list?type=brief` | 热点新闻 | 无需 | ⭐⭐⭐⭐⭐ | | `https://m.weibo.cn/api/index/list?type=hot` | 热搜榜 | 无需 | ⭐⭐⭐⭐⭐ | | `https://m.weibo.cn/api/index/list?type=fedu` | 沸点 | 无需 | ⭐⭐⭐⭐ | ### 热点新闻数据结构 ```json { "ok": 1, "data": { "cards": [ { "card_type": 9, "mblog": { "id": "微博ID", "text": "正文(HTML)", "pics": [{"large": {"url": "图片URL"}}], "user": {"screen_name": "用户名", "followers_count": 粉丝数}, "reposts_count": 转发, "comments_count": 评论, "attitudes_count": 点赞, "created_at": "发布时间" } } ] } } ``` ### 详情页爬取 获取热点新闻详情需要: 1. 从热点新闻列表获取 `mblog.id` 2. 调用 `https://m.weibo.cn/statuses/extend?id={mid}` 获取完整正文 3. 从 `pics` 数组提取图片 URL --- ## 3. 微博热搜详情页 URL 结构 | 入口 | URL 格式 | 说明 | |------|----------|------| | PC端热搜榜 | `https://s.weibo.com/weibo?q={keyword}` | 搜索结果页 | | 移动端热搜 | `https://m.weibo.cn/search?containerid=100103type%3D1%26q%3D{keyword}` | 话题搜索 | | 热搜详情页 | `https://weibo.com/ajax/statuses/mymblog?uid={uid}&feature=0&is_all=1` | 获取用户热门微博 | | 话题详情API | `https://m.weibo.cn/container/getIndex?containerid=100103type%3D1%26q%3D{keyword}` | 话题搜索API | ### 热搜榜数据源 ``` GET https://weibo.com/ajax/side/hotSearch GET https://m.weibo.cn/api/index/list?type=hot ``` --- ## 4. API 接口详解 ### 移动端 API(推荐) | 端点 | 用途 | 认证 | |------|------|------| | `https://m.weibo.cn/api/index/list?type=hot` | 热搜榜 | 无需登录 | | `https://m.weibo.cn/api/container/getIndex?containerid=100103type%3D1%26q%3D{keyword}` | 话题搜索 | 无需登录 | | `https://m.weibo.cn/statuses/extend?id={mid}` | 微博详情 | 可选Cookie | ### PC端 API | 端点 | 用途 | 认证 | |------|------|------| | `https://weibo.com/ajax/side/hotSearch` | 热搜榜 | 需Cookie | | `https://weibo.com/ajax/statuses/mymblog?uid={uid}` | 用户微博 | 需Cookie | ### API 返回数据结构 ```json { "ok": 1, "data": { "hotword": "关键词", "word_scheme": "URL编码", "num": 热度值, "icon": "icon类型", "note": "副标题" } } ``` --- ## 5. 微博图片存储与 CDN ### 图片域名 | 域名 | 用途 | |------|------| | `wx1.sinaimg.cn` ~ `wx4.sinaimg.cn` | 用户上传图片 | | `ww1.sinaimg.cn` | 头像图片 | | `cfs.sinaimg.cn` | 表情/GIF | | `tvax1.sinaimg.cn` ~ `tvax4.sinaimg.cn` | 视频封面 | ### 图片 URL 格式 ``` https://wx1.sinaimg.cn/large/{uid}.jpg // 大图 https://wx1.sinaimg.cn/orignal/{uid}.jpg // 原图 https://wx1.sinaimg.cn/thumbnail/{uid}.jpg // 缩略图 ``` ### 防盗链处理 - Referer 检查:需要设置 `Referer: https://weibo.com` - 支持 WebP 格式 --- ## 6. 反爬机制与绕过策略 | 机制 | 特征 | 应对策略 | |------|------|----------| | User-Agent 检测 | 检查请求头 | 轮换 UA 字符串池 | | IP 限流 | 短时间大量请求 | IP 代理池 | | Cookie 验证 | 登录态校验 | 维护 Cookie 池 | | 请求频率限制 | 单IP QPS限制 | 限速 + 随机延迟 3-5秒 | | 验证码 | 行为异常触发 | 打码平台 | ### 最佳实践 1. **UA 轮换**:维护 5+ 个常用 UA 2. **频率控制**:请求间隔 3-5 秒,每分钟 ≤ 20 次 3. **响应验证**:检测是否返回 HTML(验证码拦截) 4. **降级方案**:API 失败时降级到页面解析 5. **Cookie 池**:维护多个登录态,定期轮换 --- ## 7. 简报生成方案 ### 数据结构设计 ```json { "source": { "platform": "weibo", "category": "综合", "hot_id": "#话题#", "url": "链接" }, "engagement": { "likes": 316436, "comments": 0, "shares": 0, "read_count": 0 }, "content": { "title": "标题", "text": "正文", "media_urls": [], "category_tags": ["分类"] }, "author": { "username": "用户名", "followers": 0, "verified": false }, "timestamp": "ISO时间", "metrics": { "hot_rank": 0, "hot_score": 0, "trend": "up" } } ``` ### 输出格式 - **Markdown**: 适合技术文档和代码片段 - **HTML**: 适合展示和邮件简报 - **JSON**: 适合数据分析和二次处理 ### 简报模板 ```markdown # 微博热搜简报 {date} ## 今日热点 TOP 10 | 排名 | 热度 | 话题 | 热度值 | |------|------|------|--------| | 1 | 🔥 | #话题1# | 100万 | ## 详情内容 [从详情页抓取的详细内容] --- 采集时间: {timestamp} 数据来源: weibo_hotsearch_api ``` --- ## 8. 学习路径 ``` Step 1: 调用热点新闻 API (type=brief) ↓ Step 2: 解析 JSON 获取热点列表 ↓ Step 3: 对每条热点调用详情 API ↓ Step 4: 提取正文 + 图片 URL ↓ Step 5: 下载图片到本地 ↓ Step 6: 生成 Markdown/HTML 简报 ``` --- ## 洞察与建议 ### 原创洞察 1. **热点新闻 vs 热搜的核心差异** - 热搜是"用户搜索驱动的自然热度",反映大众关注点 - 热点新闻是"编辑推荐的算法+人工筛选",更偏新闻价值 - 对于新闻简报场景,热点新闻更适合,因为它更结构化、图片更丰富 2. **二次请求获取详情是必须的** - 热点新闻列表 API 返回的 `text` 字段是截断的 - 需要调用 `statuses/extend` 获取完整正文和多图 - 这增加了请求次数,但保证了数据完整性 3. **图片下载的防盗链处理** - 微博图片域名 `wx1.sinaimg.cn` 会检查 Referer - 下载时需要设置 `Referer: https://m.weibo.cn` - 建议下载后保存到本地,避免后续显示时需要网络请求 ### 常见陷阱 1. **API 突然失效**: 微博可能随时更改 API,需准备降级方案 2. **图片防盗链**: 未设置正确 Referer 导致图片无法显示 3. **频率限制**: 过于频繁请求导致 IP 被封 4. **登录态过期**: Cookie 过期导致返回 HTML 而非 JSON 5. **text 截断**: 列表 API 返回的内容不完整,必须二次请求 --- ## 工具推荐 | 工具 | 用途 | Stars | |------|------|-------| | nghuyong/WeiboSpider | 分布式微博爬虫 | 3.5k+ | | dataabc/weibo-crawler | 简洁高效爬虫 | 2k+ | | lord63/weiboSpider | 多账号爬虫 | 500+ | --- *调研时间: 2026-03-28*