免费试用
banner

大数据分析--在豆瓣谁最受关注?

作者: 大数据观察来源: 大数据观察时间:2017-04-30 10:59:580

数据的意义在于从中发现有趣的事情,以了解这个世界,体验一种创造性的快乐。我对豆瓣很有兴趣,它很特别,在国内外没有可类比的公司。对它的探究,要从研究豆瓣的用户开始。

如果要研究豆瓣的用户,先要抓取豆瓣的用户信息。豆瓣的用户的主页形如:http://www.douban.com/people/laoluo/,这个是老罗的豆瓣主页,在右下角有“罗永浩的关注”,里面有他关注的8个用户。

如果想抓豆瓣,最简单的方式是,从任意一个用户开始,比如老罗,先抓取http://www.douban.com/people/laoluo/,把页面存起来,然后找到他关注的8个用户,记下ta们的用户ID,然后再抓取ta们的主页,再找他们关注的用户,循环不断地抓下去,几乎可以抓取豆瓣用户的所有用户。

我试了几种开源的Java爬虫,有的叫spider,有的叫crawler,其实意思都一样,业内常用的是Nutch,但体量有点大,粗略看了下代码有几万行,读它的代码可能比较耗时。最后选了crawler4j,它的代码量只有几千行,然后用它的库写了一个定制版的豆瓣crawler,从任意一个用户主页开始抓豆瓣的用户资料。定制crawler用了两个线程,一个线程负责抓页面,一个线程负责把数据存到硬盘。不好用多个线程抓--豆瓣的 robots.txt即http://www.douban.com/robots.txt的指定抓取延迟不小于5秒,抓太快了会被禁掉的,这种情况下抓一个用户要用6秒时间,一天能抓60/6*60*24=14400个,一个月能抓43万个用户,豆瓣注册用户有6000万,需要139个机月,也就是139台机器抓一个月。如果在云上租139台机器,一个月的总成本大概是139*60=8340 块,租一台入门级的机器一个月60块搞得定的,做抓取绰绰有余,只是要把crawler改成分布式的才行。每个用户页面大概60k左右,1G存储1.7万个用户,6000万用户的容量不到4T。抓取线程要考虑主动注销的用户,存储线程要考虑单个目录的最大文件容量,默认每个目录存1000个文件即可。定制 crawler用糙快猛的方式搞定的,大概500多行代码。话说8千块抓豆瓣的所有用户资料不知道值不值,我觉得挺值的---应该有很多好东西可以算出来的,随随便便搞出来卖分析报告也能值这个价啊,还可以卖给好几家呢。如果要抓所有的用户关系花时间要更多了---关注者是分页的,想做类似 Facebook的graph search需要抓更多的页面。

大概抓到5万个用户的时候,我就开始做计算了,用 htmlcleaner+jython处理页面文件,最关键是找到ta们被多少人关注,被关注数表明它们的重要性。尽管5万个用户对6000万个全部用户来说太少了,还有有一些规律的---此前有一个关注榜,记录的是关注在5000以上的豆瓣达人,它是2012年出来的,在这里http://site.douban.com/144692/widget/forum/7144906/discussion/44924707/,我的结果跟它有相当一部分的重合,可见尽管样本数量少也是有效果的。

banner
看过还想看
可能还想看
热点推荐
Yonghong的价值观:以卓越的数据技术为客户创造价值,实现客户成功。