微信作为当下数一数二的社交APP,拥有巨大的用户量,在此基础上,许多附属功能也发展的越来越快,比如微信公众号,许多企业,商家或者个人都纷纷使用公众号发布文章向用户传递信息,因此,微信公众号也成了一个突出的网络舆情分析数据源。
现在有很多数据分析的案例,都会用到微信公众号发布的文章,作为数据源之一。俗话说,不会写爬虫的报表开发不是一个好的数据分析师,下面,我们就一起来看看如何用爬虫技术来快速爬取微信公众号的文章。
准备阶段
安装python开发环境
从Python的官方网站python.org下载python3.5,运行安装文件,勾上所有组件,然后一路点next即可完成安装。安装完成后打开命令行窗口,敲入python命令,得到下图界面提示后表示安装成功。
安装fiddler抓包软件
Fiddler是一个比较好用的抓包工具,可以将网络传输发送与接收的数据包进行截获、重发、编辑等操作,我们使用fiddler正好可以跟踪到微信公众号文章列表对应的HTTP链接以及请求参数等内容,方便我们做分析。
Fiddler 下载地址 :
https://www.telerik.com/download/fiddler
在电脑上登录微信
分析步骤
打开fiddler抓包软件,然后打开电脑版微信,找到需要爬取的公众号
点击公众号,再点击查看历史信息
进入历史信息界面如下
向下滑动右侧的滚动条,同时观察fiddler上的抓包信息,有新的抓包信息出现后即可停止,仔细分析抓包软件中显示的信息
如上图所示,图中选中的请求就是拖动滚动条,后台向微信服务器发起的请求,该请求可以返回公众号发布过的历史文章信息。
分析HTTP请求参数
多滑动几次滚动条,分析每次请求的参数,发现以上参数中只有offset和is_ok参数会变化,这两个参数是如何构造的呢,分析这类请求返回的json数据
在返回的json数据中,next_offset对应的就是下一次请求对应的offset参数,can_msg_continue对应的就是下一次请求对应的is_ok参数,通过观察,当返回的json数据can_msg_continue=0的时候就代表历史信息翻页已经翻到底了。
继续分析json数据, 可以看到general_msg_list键对应的value里包含了文章列表的基本信息,比如文章标题和url,向url发起请求便可以拿到文章内容。
编写脚本
根据我们以上分析,通过抓包软件Fiddler,可以找到公众号历史信息对应的url以及url请求需要携带的参数,我们可以通过代码来构造这些请求链接,并模拟翻页,一次性爬取完公众号的历史文章信息。下面就是编写代码了。
关键代码展示
爬取过程