3.6 KiB
3.6 KiB
微信公众号抓取指南
当前项目中的两条公众号数据链路
项目里当前同时存在两种公众号处理方式:
- 官方接口抓取链路
- 微信公众平台后台登录态探测链路
它们用途不同,不要混用理解。
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=...
当前抓取逻辑
- 先取
access_token - 读取永久图文素材数量
- 如果永久素材为空,回退读取草稿箱
- 解析图文内容
- 根据关键词过滤
- 保存为 JSON
- 如果通过
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_APPSECRETBAIDU_MAP_APPID/BAIDU_MAP_APPSECRET
access_token 获取失败
优先检查:
- AppID 和 AppSecret 是否正确
- IP 是否在白名单
- 公众号是否具备接口权限
探测工具能拿到文章,但主流程抓不到
这是正常现象,说明:
- 后台登录态探测链路可用
- 但
main.py仍在走官方接口链路
已删除的旧说明
以下说法不再准确:
- 当前项目只有一种公众号抓取方式
- 所有“高德 / 百度”测试结果都来自官方接口
- 后台登录态探测工具已经接入
main.py