豆瓣图书 数据分析

      前几天上网,无意中看到有人抓取了知乎的数据用户信息做数据分析,其实知乎爬虫的数据分析,我早就看到过,不过这次自己也想分析一下数据,零零总总写了许多次爬虫了,都是把数据抓下来放进数据库里,有的就是初步清洗了一下,有的干脆抓下来,往数据库里面一扔,就抛下不管。

      以前在做爬虫时,都把抓取放在第一位,后来我觉得抓取只是爬虫的第一步(当然,抓取的程序设计好,会节约很多时间),爬虫抓的数据,如果后期不做分析和处理的话,都只能算是“垃圾”,没有任何意义,后面的处理,才能将数据变废为宝,当然,也有一种情况是边抓取边处理,不过一般不建议这样设计一个爬虫程序,不但不利于调度与管理,还会导致程序复杂度增大。

      这次抓取的是豆瓣所有热门标签下的图书数据,网络上有很多电影方面的分析,所以我换了一个方向,第一次做分析,属于菜鸟类,也很初步,各位看看就好,觉得有帮助那就更好~

    我不太习惯使用框架(主要是短时间看不懂),所以程序除使用jsoup解析网页和dom4j加载一下xml文件之外,都是用java原生库实现。对了,后面图表的前端显示也没有用软件,是用java+第三方包jfreechart绘制的~

 完整花在上面的时间应该在4~5天,中间还忙活了其他的事情。

先是将豆瓣读书上,所有热门的图书标签拖下来,每一个大分类下,跟着一系列标签,如下:

 

  总共有145个。

 然后,就是把所有标签下的图书链接抓下来,我以为的图书数量就是标签下的数字,每个标签下都有起码5W+的图书信息,其实标签为作者(东野圭吾、韩寒等),图书一般都没有达到1k以上;还有像小说这种一听就知道有很多书的标签,豆瓣都是只给你1k的数据封顶,只能抓取50页。其实这个很好理解,一个原因是它防着爬虫之类的机器人,还有一个就是根据用户关注的热度来推送的,50页之后,很少有用户会感兴趣往下翻,其实所有网络上,带有翻页模式的页面,都不会超过100页,google、百度等,超过了都不显示了,因为之后都是很慢的查询(我不是指瀑布模式啊~)

整个抓取的过程,遇到了一些阻碍~不过最后还是将数据拿下来,汇成一张大表,多次校准后,数据具有较高的完整性。详情请看:

 

字段较多,不太清晰。

  所有热门标签下的图书信息我都拿了下来,每个标签下面都过滤了重复的链接(不保证每个大分类下的重复链接,如东野圭吾的《白夜行》,既属于悬疑类,又属于推理类),最后的获取到的图书数量为:

 

去掉所有大分类下重复链接后:

 

这应该是所有不重复的图书数量了,在豆瓣允许的范围内,这个数据还是比较完整的。

下面是一些分析(比较初步):

1:这:是不重复的图书数量每个大分类占比:

 

这是所有不重复的图书数量每个大分类占比,可以看到文化类占比最多。这是不去重的,其实大致没有差别,

 

2:下面3张图,是截止到我抓取为止的数据,热门的图书评论数量实时都在增长,分别是:

①:评分>=8.0且评论人数10w+以上的图书(16本);②:仅仅评论人数超过10w+的图书(18本);③:根据图书评论数量排名的TOP20;

 

 

比较后,发现,一些值得我们一读再读的名著,始终都在名单里面,名单里面也大部分是开卷即有益的好书。降低标准后,某些牛鬼蛇神涌出,同时某些有益书籍(《平凡的世界》之类)涌现。

由此可得出,数据分析算法应该是综合多种数据后得到的权重模型(这是我从某位豆瓣电影数据分析的一位仁兄那看来的一句话(当然我也是这么认为的),这样形容比较贴切,我稍做润色,还是谢谢那位仁兄),所以不一定评论人数多或者评分高的书籍值得去阅读,综合考虑得出的结果才可算作公平。典例请参考郭敬明的《梦里花落知多少》和路遥的《平凡的世界》。

3:这是评论人数5w+以上的图书分布情况:

 

  从分布情况来看,图书评论人数5w+以上,评分大部分集中在7.5~9.0之间,但是也有例外,有2本是低于7.0分的,没错,还是郭敬明的~(《悲伤逆流成河》6.2分和他的《小时代》6.7分),大家的品味还是有的。在这里面,只有国学名著《红楼梦》达到了9.5的高分,经典总是不容辜负。评论人数最多,且分数也达到了8.8高分,想必大家都知道,是《追风筝的人》~

4:这里还有一些图书短评数量等的排名TOP20:

其实大部分书籍也出现在前面的名单中,毕竟都是排名评分较高的,但是也无法准确的反应有效信息,因为未获取短评具体内容,各位看看就好~

其实还可以像豆瓣上的统计那样,评出TOP250什么的,只不过再弄就没有多大意义了,上面的几个分析已经有了初步判断,况且数据都有,只是换一下数据库的查询和筛选而已。我的数据量不大,字段数量也一般,数据库的查询筛选都比较快,需要思考的在于SQL语句的书写。

闲话一下感想:

      想起前段时间学校实验室的老师跟我说,所谓的数据挖掘和流行的大数据分析,到最后,就是一个数据库而已,之前一知半解,知其然而不知其所以然,现在才觉得摸到点门道了。

      代码的话,没什么难度,爬虫的基本思路,接触过的人应该都了解,我中间花在抓取上的时间较多,主要是想在了解了对方的反爬策略后,找出一个最好的抓取策略,快速而全面的获取数据。

  现在流行的一个思想就是分布式,但是我觉得爬虫的设计应该视情况而定吧,不同数据的抓取有不同的抓取策略,分布式在大型数据的拖曳与分析中,优势很大。我之前做过全国google地图的拖曳下载,写过一个分布式的爬虫,后面会再总结分析。于我个人的理解来说,分布式爬虫的设计主要在于二个问题:控制与调度。控制即多次测试后,找出最适合的抓取策略,在数据抓取的来源网站限制下,控制爬虫最大程度的获取更多数据;调度即在各种意外情况(断网、断电等),服务器对不同爬虫客户端任务的处理。

豆瓣图书的分析到此为止(也挺简单的,主要是我觉得没啥好分析的了),后面继续,对豆瓣的用户数据分析(时间允许的话),有兴趣可以跟进了解一下~

如果对代码感兴趣的话,有时间我会贴出来。

 代码传送门:https://github.com/metaotao/doubanbook

  • 14
    点赞
  • 89
    收藏
    觉得还不错? 一键收藏
  • 16
    评论
豆瓣网站是一个非常受欢迎的图书评价和推荐平台,用户可以在上面查找图书信息、发布评论和评分。对豆瓣网站的书籍数据进行分析可以帮助我们了解用户对不同书籍的评价和喜好,从而为读者提供更好的推荐和选择。 以下是一种豆瓣网站书籍数据分析的方法: 1. 获取数据:首先,我们需要获取豆瓣网站的书籍数据。可以通过豆瓣提供的API或者爬虫技术来获取数据。API可以提供更加规范和方便的数据访问方式,而爬虫技术可以获取更加详细和全面的数据。 2. 数据清洗:获取到的数据可能存在一些噪声和不完整的信息,需要进行数据清洗。清洗的过程包括去除重复数据、处理缺失值、纠正错误数据等。 3. 数据分析:在清洗完数据后,我们可以进行各种数据分析操作。例如,可以统计不同书籍的平均评分、评论数量、阅读人数等指标,以及不同书籍之间的相关性和趋势。 4. 可视化展示:将分析结果进行可视化展示可以更直观地呈现数据的特征和趋势。可以使用各种数据可视化工具和库,如Matplotlib、Seaborn等,生成图表、图像和动态图等。 5. 结论和推荐:根据数据分析的结果,我们可以得出一些结论和推荐。例如,哪些书籍受到了更多的关注和好评,哪些书籍具有较高的阅读价值等。 需要注意的是,豆瓣网站的书籍数据分析是一个复杂的过程,需要综合考虑多个因素和指标。以上只是一个简单的示例,实际的数据分析过程可能更加复杂和细致。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值