微信公众号爬虫方案分析(爬取文艺相处公众号)
之前考虑过使用搜狗微信来爬取微信公众号信息,不过搜狗提供的数据有诸多弊端,比如文章链接是临时的,文章没有阅读量等指标,所以考虑通过手机客户端利用 Python 爬微信公众号文章。
因为微信公众平台并没有对外提供 Web 端入口,只能通过手机客户端查看公众号文章,所以使用Fiddler来进行抓包,分析微信公众号相关操作的请求信息,后面通过Python 代码来模拟微信请求。
抓取公众号所有历史文章
使用 Fiddler 抓包方式,打开手机某个微信公众号历史文章列表,上拉加载更多,此时可以找到加载更多文章的 URL 请求地址:
分析response,几个字段信息:
ret:请求是否成功,0就表示成功
msg_count: 返回的数据条数
can_msg_continue: 是否还有下一页数据
next_offset: 下一次请求的起始位置
general_msg_list:真实数据
general_msg_list是历史文章里面的基本信息,包括每篇文章的标题、发布时间、摘要、链接地址、封面图等,而像文章的阅读数、点赞数、评论数、赞赏数这些数据都需要通过额外接口获取。
通过字段 can_msg_continue 确定是否继续抓取,再结合 next_offset 就可以加载更多数据,我们需要把 url 中可变的参数 offset 用变量来代替,递归调用直到 can_msg_continue 为 0 说明所有文章都爬取完了。
class WeiXinCrawler:
def crawl(self, offset=0):
"""
爬取更多文章
"""
# appmsg_token需刷新
url = "https://mp.weixin.qq.com/mp/profile_ext?" \