近日为学校公众号统计发稿情况,需统计本年度各部门分别所发稿件标题、时间、作者等。
首先考虑查看公众号后台有无统计功能,看到的界面如下:
每页只显示7天的消息,且没有部门作者信息。再看另一界面:
只统计总体的发稿数量,阅读量等信息,没有具体的稿件信息。
再考虑通过微信前端,能否使用查看历史消息的功能,获得所有稿件。经尝试,网页版微信无法打开历史消息,手机端和PC端程序可以打开历史消息,但无法进行复制操作。而且历史消息也不能获得全部信息,只有稿件标题和发表时间,并没有作者信息。
再进后台逛一逛,没发现有信息比较全面的地方,只是在“素材管理”的“图文消息”下,还能列出比较多的消息,但同样看不到部门作者信息。
好在后台都是在浏览器中去打开,可以查看一下页面的源代码。这一看,有了意外的收获。
这里有标题、时间和部门作者信息。但这信息太乱了,怎么把它提取出来呢?
笔者近来一直研究创客、机器人和人工智能,这些领域都以Python语言为主要开发工具,我也学了它,正好在此实践一下。
编程之前,我们还是先把数据捋一下,搞清楚。
首先,这个页面并不包含全部的历史消息,而是分页显示的。网页地址是这样的:https://mp.weixin.qq.com/cgi-bin/appmsg?begin=0&count=10&......
begin表示第几页,count表示每页含有消息数量。为了减少翻页次数,我尝试将count数量加大到100,结果发现返回的页面并没有包含100条消息,只有50条消息。经验证,count最大设置为50时,返回的页面包含消息数量和设置的数值是一值的。这样我们可以分别使用…begin=0&count=50&…,…begin=50&count=50&…,…begin=100&count=50&…等地址来获取每页50条消息,直至取到所需要统计的起始日期为止。
接着,分析页面数据的结构,整理如下:
这样数据的结构清晰多了,这儿整理出来只是为了让大家能更容易看清,只要结构不变,怎么乱我们的程序都能识别。最后就是利用Python编写程序提取所需信息了。经过反复调试,程序终于实现了功能。但目前还只是个半成品--未集成微信公众号登录及相关页面下载的功能。需手动登录后台并进入相关页面保存相关网页,然后用此程序提取信息。因微信登录必须扫码完成,所以手动操作是不可避免的,在后续的版本中,将提取人工扫码登录后的HTTP头部参数,传递到程序中,实现网页的自动下载,提高自动化程度。关注“民族中专创新工作室”,发送“微信统计”,可获取源码下载地址。