如何爬取微信公众号文章的数据

放在前面

针对“基于数据挖掘算法的阅读量的分析”这个题目,我做了三天的研究后,决定不选这个题目作为毕业设计,在这里记录一下一些心得。

1什     项目难度的分析  

显而易见,项目分为三个部分:

数据获取(网络爬虫)

数据分析(常用的数据挖掘算法)

分析结果展示(前端网页技术)

我的个人现状:

网络爬虫应该算不上入门,会写几十行代码的那种爬虫,前提是网页的URL规律容易找。爬虫框架Scrapy不会,只会用BeautifulSoup和Xpath,至于一些反爬虫技术,只会用代理IP。

数据挖掘算法,也是算不上入门,但是比一般人稍微多了解一点儿,因为我花过一段时间研究周志华的那本西瓜书,吴恩达的Machine Learning课程看了两节。

前端技术,会几个HTML标签。Vue,Flask一窍不通。

    结合我自己的就业方向,我换题了,如果毕业设计和以后的就业关联不大,我可能会白白浪费几个月的时间。(如果有时间我肯定会继续捣鼓的爬虫,这么多数据,谁又不惦记呢?)

2什     公众平台的爬虫  

任何爬虫都是分为三个步骤:

获取URL

请求URL

解析response

1. URL在哪?

    文章阅读量这个数据,只能在移动端看到,所以必须要通过移动端向服务器发起请求才会有相应的URL。我们要获取到该URL,必须要使用代理服务器进行抓包。

    

    阿里云有一款基于Node.js开发的开源的代理服务器——AnyProxy。我们可以把自己的手机和PC放在同一个WiFi下,在手机上进行代理的配置。(默认只能代理HTTP协议,如果需要代理HTTPS协议,需要手动在PC端和移动端安装CA证书)一切安装配置完成后,就能看到自己的每次操作对应的URL了:

2. 有了URL之后干什么?

    如果你寄希望于,能发现URL的规律,那你还是别想了。我们能看到的URL里面的参数都是加密过后的结果,所以只能把参数存在数据库里,然后再用Python程序模拟,这个参数是有一定的过期时间的,要在过期时间内用Python程序模拟请求过程。为了保证读写速度,可以考虑使用Redis数据库。

3. 接口更新了怎么办?

    它真的是更新了!越来越精明,对爬虫的人越来越不友好!网上低版本的安装包不是很好找,豌豆荚里倒是很齐全,经过我数十次的安装与卸载发现:低于6.7.3的版本,即使成功安装也已经不能登录了:(强制升级)

    能够成功登录的最低版本是6.7.3,这个版本的,详情里有这样一个按钮:

    点开查看全部消息之后,会出现一些文章列表,继续下滑会出现加载更多的字样,一次加载代表一次get请求。在7.03版本之后就取消了全部消息这个按钮。

        

    再往后我就没有研究了,只是感慨:HTTP协议学的不好的人不配爬虫。成为一个爬虫高手,熟练分析URL是基本功。

3什     如果想要继续做下去怎么办?  

    前面提到了用Redis数据库存储请求参数,那么得到的数据也需要存放在数据库中——MongoDB或许是个不错的选择。如果需要有全文检索功能ElasticSearch也需要学习一下。

    一个手机,一个号爬取速度太慢,可以在Windows平台上多开几台安卓模拟器,多个终端一个IP也不太现实,代理IP池了解一下……(友情提示:被发现请求异常,可能会被限制接口)

    关于数据分析环节,我在知网看到了一篇同名的硕士论文,他把文章阅读量作为因变量,分析一些因素对其的影响,采用了多种模型进行分析,文章里没有提到数据是怎么获取的,可能是买的。

4什     有什么比较耗费时间的环节吗?  

    对于爬虫,我是从网上找了一个轮子,无奈至今没有跑起来!有些人喜欢把学习Python的人称为:调包侠。调包侠第一步,导包。导入依赖包这个过程,竟然花了我一天时间。

    命令安装失败后,去官方网站下载源码时注意版本的匹配。

    cp36代表Python3.6的意思。

    还有一点:不要盲目追求高版本,最新版本可能没有与之对应的依赖包。

放在最后

这篇文章只是提供一些思路,具体的落地实现,不知道要遇到多少个耗费时间精力的傻瓜问题,也只有去做才能真真正正体会到其中的酸甜苦乐!

我——一个还没入门就放弃的初级调包侠,精通Python各种依赖包的导入。

希望这篇文章能给你带来一些新想法~

你点的每个赞,我都认真当成了喜欢