newsreport_agent_for_traffic/WECHAT_CRAWLER_GUIDE.md

3.6 KiB

微信公众号抓取指南

当前项目中的两条公众号数据链路

项目里当前同时存在两种公众号处理方式:

  1. 官方接口抓取链路
  2. 微信公众平台后台登录态探测链路

它们用途不同,不要混用理解。

1. 官方接口抓取链路

对应文件

  • crawler/wechat_crawler.py:高德地图公众号
  • crawler/baidu_map_crawler.py:百度地图公众号
  • crawler/wechat_mp_crawler_base.py:通用基类

这条链路的特点

  • main.py 正式集成
  • 依赖 AppID/AppSecret
  • 通过微信官方素材接口和草稿接口获取内容
  • 可直接进入统一向量库流程

环境变量

WECHAT_APPID=...
WECHAT_APPSECRET=...
BAIDU_MAP_APPID=...
BAIDU_MAP_APPSECRET=...

当前抓取逻辑

  1. 先取 access_token
  2. 读取永久图文素材数量
  3. 如果永久素材为空,回退读取草稿箱
  4. 解析图文内容
  5. 根据关键词过滤
  6. 保存为 JSON
  7. 如果通过 crawl_and_save(..., save_to_rag=True) 调用,则写入向量库

直接运行示例

python crawler/wechat_crawler.py
python crawler/baidu_map_crawler.py

通过主流程运行

python main.py --mode crawl --sources wechat
python main.py --mode crawl --sources baidu
python main.py --mode full --sources wechat,baidu

数据结构

官方接口解析后的文章字段包括:

{
  "title": "文章标题",
  "author": "作者",
  "digest": "摘要",
  "content": "正文纯文本",
  "content_html": "正文HTML",
  "content_source_url": "原文地址",
  "thumb_url": "封面图地址",
  "url": "微信文章URL",
  "date": "2026-04-29",
  "update_time": "2026-04-29 10:00:00",
  "timestamp": 1777428000,
  "source": "高德地图公众号",
  "crawl_time": "2026-04-29 10:05:00"
}

2. 后台登录态探测链路

对应文件

  • crawler/wechat_mp_backend_client.py

这条链路的用途

  • 用公众号后台登录 Cookie 做验证和排查
  • 可搜索公众号账号、列文章、尝试抓正文
  • 适合测试“高德地图官方号 / 百度地图官方号”是否能拿到有效文章
  • 默认不被 main.py 调用

需要的条件

  • 有效的 WECHAT_MP_COOKIE
  • 可用的微信公众号后台登录态
  • 抓正文时需要本机 Edge + Selenium

示例

python -m crawler.wechat_mp_backend_client --biz-query AMap --count 5 --fetch-content

IP 白名单说明

如果走的是“官方接口抓取链路”,可能遇到微信 IP 白名单限制;见:

如果走的是“后台登录态探测链路”,它依赖的是 Cookie 和后台权限,不走 AppID/AppSecret 白名单流程。

当前项目中的实际边界

  • main.py 当前只接入官方接口抓取链路
  • 后台登录态探测工具主要用于验证真实公众号文章能否访问
  • “探测成功”不等于“主流程已改为走后台链路”

常见问题

配置了公众号数据源但被跳过

检查:

  • WECHAT_APPID / WECHAT_APPSECRET
  • BAIDU_MAP_APPID / BAIDU_MAP_APPSECRET

access_token 获取失败

优先检查:

  1. AppID 和 AppSecret 是否正确
  2. IP 是否在白名单
  3. 公众号是否具备接口权限

探测工具能拿到文章,但主流程抓不到

这是正常现象,说明:

  • 后台登录态探测链路可用
  • main.py 仍在走官方接口链路

已删除的旧说明

以下说法不再准确:

  • 当前项目只有一种公众号抓取方式
  • 所有“高德 / 百度”测试结果都来自官方接口
  • 后台登录态探测工具已经接入 main.py