告别手工抄数:用 wechat_articles_spider 把公众号阅读量、点赞数一键装进表格
2026/9/6 19:25:18 网站建设 项目流程

告别手工抄数:用 wechat_articles_spider 把公众号阅读量、点赞数一键装进表格

【免费下载链接】wechat_articles_spider微信公众号文章的爬虫项目地址: https://gitcode.com/gh_mirrors/we/wechat_articles_spider

周五下午四点半,运营小林对着电脑屏幕发呆——明天要交月度竞品分析,20 篇对标文章的数据还躺在一篇篇微信推文里。她得点开每一篇,滑到最底下,记下阅读量、点亮那个小心形看点赞数,再把评论区热评一条条复制出来。一篇折腾三分钟,还没算中途被"访问过于频繁"卡住。这可能是每一个做公众号运营、内容分析或学术研究的人都经历过的噩梦:微信官方并没有提供批量导出文章数据的接口,而手动记录既慢又容易漏。

有没有一个工具,能把"打开文章 → 找数据 → 抄进表格"这三步,压缩成"跑一个脚本"?答案就在我们今天要聊的这个开源项目里——wechat_articles_spider,一个面向开发者和数据分析师的 Python 微信公众号爬虫库。它通过模拟微信客户端行为,帮你批量抓取公众号的文章链接、阅读量、点赞数和评论信息,甚至能把整篇文章连同图片下载到本地存档。无论你是分析自己账号的表现,还是监控竞品动向,它都能把最费时的那部分数据采集工作自动化。

30 秒看懂这个爬虫能做什么

先给你一张"能力地图",建立整体认知:

能力对应模块一句话说明
采集阅读量、点赞数、评论wechatarticles/ArticlesInfo.py输入文章链接,返回互动指标 JSON
批量获取文章链接wechatarticles/ArticlesUrls.py公众号网页版 / PC 微信 / 移动端 / 微信读书,四条路任选
查询公众号信息与发文量PublicAccountsWeb搜别名、拿 fakeid、统计文章总数
下载文章为本地 HTMLwechatarticles/Url2Html.py支持图片、音频、视频一并归档
一条龙示例脚本test/目录从抓链接到存 Excel,都有现成模板可改

一句话总结它的定位:它不做自动登录、不做实时推送,专注把"已授权参数下能拿到的公开数据"稳定、规整地抓给你

能力拆解一:阅读量、点赞数与评论,一个方法全搞定

这是整个项目最核心的价值。文章在公众号后台只能看到"群发数据",而单篇推文的实时阅读量、点赞数,以及评论区互动,普通用户根本无处批量获取。ArticlesInfo正是为此设计的。

它怎么做到的?原理其实不复杂:当你点开一篇微信文章时,客户端会向getappmsgext接口请求互动数据,而这个请求需要携带appmsg_tokencookie两个凭证。ArticlesInfo要做的事就是:帮你把文章 URL 解析成__bizmididxsn四个参数,拼好请求,然后解析返回的 JSON。

看下真实调用,是不是比想象中简单:

from wechatarticles import ArticlesInfo ai = ArticlesInfo(appmsg_token, cookie) read_num, like_num, old_like_num = ai.read_like_nums(article_url) comments = ai.comments(article_url)

一次调用返回三个数值:阅读数、点赞数、旧版点赞(也就是"在看"的前身),comments则返回完整的评论 JSON,包括每条评论的文字、点赞数、是否置顶、作者昵称和头像。对比一下:

  • 没有它之前:一篇篇点开文章 → 滑到底 → 记数 → 翻评论,一篇 3 分钟。
  • 有了它之后:一条命令拿到一篇文章的全部互动数据,循环 100 篇也只是加个for的事。

如果你还想顺带分析正文,content()complete_content()可以返回纯文本正文、字数、图片数量、标题、发布时间戳、是否含视频/内链等结构化信息。示例代码在 test/test_WechatInfo.py,照着替换参数就能跑。

能力拆解二:四条通道获取文章链接,总有一条适合你

拿到互动数据的前提是手里得有文章链接。ArticlesUrls.py针对不同场景提供了四套获取方案,这是我觉得项目里最有"工程智慧"的部分:

  1. PublicAccountsWeb(公众号网页版):模拟登录微信公众平台,按公众号名称搜索、拿 fakeid,再分页拉取历史文章列表。适合日常增量抓取,但单次数量有限制,量大时建议多账号并行。
  2. PC(PC 端微信):通过profile_ext接口翻历史消息,能拿到超过 500 条的链接。代价是"一次性",README 里作者特别提醒这方法用完即失效,要慎重
  3. Mobile(移动端微信):原理同 PC 端,目前文档标注已失效,留作参考。
  4. WeBook(微信读书):一个冷门但好用的偏门通道——通过微信读书的订阅源接口抓链接,目前看来不会封禁,被判定频繁时在移动端过个滑动验证码就能继续。

再加上utils.py里现成的get_history_urls工具函数,你可以直接拿到按时间排序的历史链接列表。选择建议:日常监控用网页版最稳妥,一次性补全历史数据再考虑 PC 端。

能力拆解三:文章一键下载成离线 HTML,内容归档不再怕删文

做竞品研究和内容库建设的人,最怕的一件事就是:昨天还能打开的文章,今天显示"该内容已被发布者删除"。Url2Html就是为了解决这个焦虑而生的。

它的run()方法提供 6 种模式,从轻到重自由选择:

  • mode 1:只返回 HTML 源码,不下载图片
  • mode 3:返回源码,下载图片并替换成本地路径
  • mode 4:保存 HTML 文件 + 下载图片(最常用)
  • mode 5:在 mode 4 基础上,连文中的音频(mp3)和视频(mp4)一起下载
from wechatarticles import Url2Html uh = Url2Html() res = uh.run(article_url, mode=4) print(res) # 输出: xxx success!

下载后它会自动按"公众号名/日期/标题"的规则归档,图片集中放在imgs子目录,还贴心地处理了 Windows 下标题非法字符的问题。跑一遍 test/test_Url2Html.py,你就拥有一个可离线阅读、可长期存档的内容库了。

三分钟跑通第一个例子:从安装到拿到一篇阅读量

好,理论说完了,现在动手。整个上手过程就三步。

第一步,安装依赖。克隆仓库后安装依赖,或者直接装发布包:

git clone https://gitcode.com/gh_mirrors/we/wechat_articles_spider cd wechat_articles_spider pip install -r requirements.txt python -c "import wechatarticles; print('安装成功!')"

第二步,拿到两组关键参数。这是最需要耐心的一步,也是项目文档最详细的部分:

  • cookie + token(公众号网页版用):登录微信公众平台 → 按 F12 打开开发者工具 → Network 面板 → 刷新页面,在任意一个请求的 Headers 里就能看到 Cookie 和 token。详细图文步骤见 docs/get_cookie_token.md。
  • appmsg_token + cookie(抓文章数据用):用 Fiddler(或 Charles、mitmproxy 等任意能解 HTTPS 的抓包工具)监控微信 PC 端,点开任意一篇文章,找到getappmsgext请求,参数和响应都在里面。操作截图见 docs/get_appmsg_token.md。

第三步,替换参数跑通。拿到参数后,把 test/test_WechatInfo.py 里的appmsg_tokencookiearticle_url换成你自己的,运行:

python test/test_WechatInfo.py

屏幕上打印出评论列表和read_like_num: 1546 56 10这样的输出时,你就已经跨过最大的门槛了。

实战演示:把整个公众号的文章数据倒进 Excel

光跑通一篇还不够,我们来看一个完整场景:把某个公众号近期的所有文章标题、日期、阅读量、点赞数,一次性导出成表格。项目在 test/test_GetUrls.py 里给出了完整骨架,核心逻辑如下:

  1. get_history_urls(biz, uin, key, ...)拉取历史文章链接列表;
  2. 循环遍历,对每篇文章调用ai.read_like_nums(url)拿到阅读数和点赞数;
  3. 每条结果追加进列表,用 pandas 写入 Excel:
import pandas as pd from wechatarticles import ArticlesInfo from wechatarticles.utils import get_history_urls lst = get_history_urls(biz, uin, key, lst=[], start_timestamp=0, start_count=0, end_count=10) ai = ArticlesInfo(appmsg_token, cookie) item_lst = [] for item_lst_raw in lst: for item in item_lst_raw: url = item["app_msg_ext_info"]["content_url"] read_num, like_num, _ = ai.read_like_nums(url) item_lst.append([url, item["app_msg_ext_info"]["title"], read_num, like_num]) time.sleep(random.randint(5, 10)) # 控制频率,别太贪 df = pd.DataFrame(item_lst, columns=["url", "title", "read_num", "like_num"]) df.to_excel("公众号数据.xlsx", encoding="utf-8")

跑完之后,你得到一张结构化的表格。接下来无论是算阅读点赞比、画趋势折线,还是做竞品对比,都只是 pandas 和 Excel 的事。注意脚本里的time.sleep不是摆设——它是你账号的保命符。

过来人的五条避坑心得

项目作者在 README 里写了很多血泪经验,我再结合实践补充几条:

  1. 跑之前先关代理。绝大多数"爬取失败"的报错,根源都是开着抓包软件或系统代理导致请求异常。ArticlesInfo默认把proxies设为空,就是为了避免这个坑。
  2. 参数必须"对号入座"。cookie、token 是在目标公众号的任意一篇文章里抓的,换一个公众号就要重新抓。用错公众号的参数,接口会直接报错。
  3. 频率是生命线。获取阅读点赞时,每篇间隔 5-10 秒;token 有效期约 4 小时。一旦被封,等 5-10 分钟再试通常能恢复——千万别硬刚。
  4. 不要一上来就跑全量。先把count设小(1-5),用 3-5 篇文章验证参数和代码都没问题,再放开循环。网页版抓链接时每页间隔建议拉到 3 分钟,稳比快重要。
  5. 善用"半自动"思路。项目刻意不做自动登录、不做实时调度,因为自动化会放大风险。正确的用法是:定期手动更新参数(或自己写脚本半自动化),然后让采集逻辑稳定跑完。README 里那句"不能开箱即用"不是劝退,而是让你先读文档和源码——这恰恰是它质量高的原因。

下一步往哪走

回到开头的小林。当她把这个脚本接进自己的周报流程后,20 篇文章的数据采集从一下午缩短到了几分钟,表格自动生成,评论热词还能顺手做个词云。这就是工具的意义:把重复劳动交给代码,把判断力留给人

如果你准备上手,建议按这个顺序探索:先读 test/ 下的四个示例脚本,对照 wechatarticles/ 的源码理解每个类的职责;再按 docs/get_cookie_token.md 和 docs/get_appmsg_token.md 完成参数采集;最后根据自己的场景(周报、竞品监控、内容存档)改写示例。项目公开了几个已爬取的公众号历史文章 JSON(见jsons/目录),也可以先拿这些数据练手。别忘了:数据抓取只是手段,合规使用、尊重平台规则才是底线——把它用在合法合规的个人学习和数据分析上,这个项目会是你工具箱里很趁手的一件。

【免费下载链接】wechat_articles_spider微信公众号文章的爬虫项目地址: https://gitcode.com/gh_mirrors/we/wechat_articles_spider

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询