简介
前几天,一直在学习爬虫,然后最近想到了一个不错的idea,想以这个小demo来结束爬虫的学习。
是这样的:登入qq空间,爬取自己或者好友的所有说说记录,然后区统计分析一共发了多少说说,每条说说的评论有多少,谁评论的最多,有多少赞,谁赞最多,还有可以找出你的qq好友中男女比例多少,来自哪里,什么星座等等。
思路
这里讲下具体思路,具体代码我托管到github,有兴趣的朋友可以去fork,https://github.com/jerry-sc/QQZone.git
这次爬虫并没有使用之前博客提到的scrapy,而是转向了JAVA,用的框架叫做webmagic。可能大家对这个框架比较陌生,毕竟这个出现也没多久,而且是一个大牛业余开发的,用的人也不是特别多,我也是偶然百度的时候搜到的。它的主页是http://webmagic.io 大家有兴趣可以看下,我个人觉得写得还是非常棒的,它也是模仿scrapy这一成熟框架起来的,如果你对java比较了解,遇到问题看看源码,会让你对爬虫的体系有更近一步的了解,如果你对scrapy比较了解,那么我想你只要掌握写基本的java语法知识,那么必会轻松掌握此框架。
QQ空间就像新浪微博一样,如果要实现模拟登入,你一定要花很多功夫去了解里面的加密技术等,这种高端技术吾等小白还有很长一段路要走,所以我这里用最笨的办法,就是登入后获取cookie然后手动填入请求头中。
简单的分析下网页源代码可以发现,qq的说说信息,都是js带过来的,所以这里要面对的是如何从js文件中抽取信息,好在webmagic的作者在其框架介绍里面写了一篇如何爬取动态网页的博客,收获实在是太多了,http://webmagic.io/docs/zh/posts/chx-cases/js-render-page.html 这是地址,即使你不用此框架也没事,相信看了后,定会对动态网页的爬取获得经验。关于爬取URL的说明,我这里也不多说了,大家可以结合我的代码看看(我承认代码有点乱,不过我非常欢迎大家和我交流,一个人闷头写代码,收获远不及大家讨论,这也是我写博客的重要原因)。
我将爬取到的数据,保存到mysql中,下面是四张表的截图,关于表的设计,我并没有对其进行规范化设计,只是将其作为数据保存。
实现
一、说说表(shuoshuo)
二、评论表(comment)
三、好友表(friend)
四、赞表(zan)
最后,是数据的分析,由于没学过什么聚类,分类等数据挖掘的算法等,所以我这里只是简单的对数据进行求和,排序等。最近在开始看数据挖掘算法之类的书,争取以后结合一些算法,对数据进行更深层次的挖掘。
成果展示的图表我这里用了一个叫jfreechart的图表生成插件,网上一搜,到处都是教程,这里也不做详细介绍了。直接上图吧。
That's All. 以上就是这个小demo的所有内容了,欢迎大家和我一起交流探讨。