一道大数据习题

现在到处都说“大数据”,我也跟着标题党一下。今天要说的这个,还算不上大数据,只能说跟以前的习题相比,数据量略大了一点。

前阵子我们做了个抓取热映电影的程序。有个朋友看到了就说,他正好需要一项数据:豆瓣上的电影按评价人数从高到底排序。他认为,单是评分高低并不能说明一部电影的受关注度,比如有些分超低的奇葩大烂片照样火得很。但豆瓣本身并没有提供类似的功能。所以他想找我帮忙。我说你要排出多少?他说三千部。我说你这是要开录像厅吗!一天看一部也得看个八、九年。他说这你甭管,我这是要用来做决策参考的。

我想了想,觉得这事也不是太难搞定,只是有些复杂,要处理几个问题。不过这倒是一个用来练手的好题目。于是秉着授人以鱼不如授人以渔的原则,我决定把这个问题整理一下,抛给大家。

问题描述:

抓取豆瓣上的电影,按评价人数从高到低排序,列出前3000部。

每部电影显示名称、评价人数、豆瓣评分、豆瓣链接。

问题分析:

基本思路是:1.抓下所有的电影;2.按评价人数排序

然而豆瓣上并没有提供“所有电影”这样一个列表,也没有一个全覆盖的分类,有的只是:标签。

http://movie.douban.com/tag/?view=type

这个页面就是豆瓣的标签页面,上面列出了常用的标签。但一个电影可能有很多个标签,也可能不含有这里列出的标签。另外我尝试了下,每个标签只能显示前50页也就是1000部电影。

所以我想到的方法就是:先抓取这个页面上的所有标签,然后进入每个标签页的前50页抓取电影列表。我们要的信息列表页上都已经有了,不用再进入影片页面。但在记录电影的时候,需要去除重复。已经记录下的电影就不再重复记录。这个操作可以在抓取的时候进行,也可以先全部抓取,再去重。

这样做其实未必能抓到所有电影,不过对于我们这种精确度不需要很高的需求来说,应该足够了。

得到所有影片的信息之后,接下来排序就比较容易了。Python中提供了sort方法。但这里可能遇到的问题是,影片数量太多,导致读写和排序都很慢。一个供参考的优化方法是:在抓取的时候就分段存储,预先给评价人数设定一些值,按这些值来存储不同级别的电影。最后排序的时候可以每一段分别排序,而如果高评价人数的电影已经超过三千部,就无需再排后面的影片。

结果展示:

最后的结果建议保存成一个html文件,并且把影片的豆瓣地址做成链接。这样在浏览器中查看的时候,就可以直接链接到对应的豆瓣页面上。

你还可以增加一些数据统计,比如评价人数的分布,评分的分布,评价人数与评分的关系等。对web开发熟悉的同学,甚至可以把这些数据做成一个小网站,用来对豆瓣电影进行多维的搜索排序,成为一个个性化的电影推荐应用。

题外话:

前面提到,这样可能也无法抓到所有电影。一种更全面的方法是,在数据库里维护标签和影片的数据,然后从每部电影的标签和相关电影中不断寻找没有抓过的标签和电影,递归地抓取。但这样做,消耗的时间是远远超出现在的方法。

知乎上有个问题:“豆瓣有多少部电影?”。有人用抽样统计的方法推算出大约在2万部左右,但加上各种短片、动画、广告片,可能有几十万。做完这个程序,你也可以对这个问题有一个自己的答案。

上次讲了抓天气的程序之后,天气网的接口就有些不稳定了。希望这次不会给豆瓣带来压力。

我在crossin.me的编程论坛中开个帖,关于这道题的问题,欢迎在帖子里讨论。点击“阅读原文”直接到达。

#==== Crossin的编程教室 ====#

面向零基础初学者的编程课

每天5分钟,轻松学编程

回复『 p 』查看python课程

回复『 g 』查看pygame课程

回复『 t 』查看习题

回复『 w 』查看其他文章

本文分享自微信公众号 - Crossin的编程教室(crossincode)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2013-10-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 机器理解大数据秘密:聚类算法深度剖析

    在理解大数据方面,聚类是一种很常用的基本方法。近日,数据科学家兼程序员 Peter Gleeson 在 freeCodeCamp 发布了一篇深度讲解文章,对一...

    Angel_Kitty
  • 从李彦宏的哥白尼日心说故事 看大数据+Insight合理性

    中新网5月27日电 5月25日,在2016中国大数据产业峰会上,百度公司创始人兼CEO李彦宏发表了演讲,在演讲中,李彦宏不出意料地提到了百度的无人车和人工智...

    灯塔大数据
  • 深度|大数据时代的“因果关系”思辨:相关性和因果性

    迈尔舍恩伯格在《大数据时代》里说,“要相关,不要因果”,在大数据时代,有相关,就够了。而周涛则在《为数据而生》一书中说,放弃对因果关系的追寻,就是人类的自我堕...

    灯塔大数据
  • 让IT安全从业人员夜不能寐的11个数据问题

    面对洪水般一波又一波汹涌而来的威胁,安全从业人员似乎必须时刻警惕着以保证公司安全。但威胁如此之多,风险面如此之广,安全从业人员如何界定处理优先级呢?波耐蒙研究所...

    灯塔大数据
  • 干货 | 舆论事件频发 大数据如何引导网络舆情

    维克托·迈尔·舍恩伯格在其著作《大数据时代》中提到,大数据带来的信息风暴正在变革我们的生活、工作和思维,大数据开启了一次重大的时代转型。 奥巴马政府将大数据定...

    灯塔大数据
  • 【媒体聚焦】阿联酋投资银行10GB数据泄露 大数据时代中国信息安全如何保障?

    大数据-全文略读:中国大数据安全风险不容忽视,近八成个人信息曾被泄露。当前全球数据呈现爆发式增长,随着数据价值的显现,以数据引领创新,用数据驱动发展已经成为国...

    灯塔大数据
  • 大数据时代的弄潮儿

    “如今的贵州是中国南方数据中心,而我又主攻计算机的‘算法’,所以我来了。”法国南布列塔尼大学博士柯贵耀说,贵州是实现梦想的沃土。 柯贵耀曾受邀参加了2015贵...

    灯塔大数据
  • 大咖汇| 数博会来啦 看克强总理与行业大佬都说了啥

    从24日开始,贵阳迎来了一场举世瞩目的盛会 2016中国第二届大数据产业峰会在贵阳召开 大咖云集,让贵阳成为全世界关注的焦点 最大的大咖 李克强总理也来了 ?...

    灯塔大数据
  • 大数据时代引发“歧视”忧虑,但不该就此因噎废食

    大数据越来越被视为一种战略性资产,它可以通过其强大的预测技术来改造组织。 ? 据社会研究人员小组研究,大数据对公众和社会的影响,当涉及到帮助系统做出决定时,应...

    灯塔大数据
  • 大数据入门的四个必备常识

    一、大数据分析的五个基本方面 1、可视化分析 大数据分析的使用者有大数据分析专家,同时还有普通用户,但是他们二者对于大数据分析最基本的要求就是可视化分析,因为...

    灯塔大数据

扫码关注云+社区

领取腾讯云代金券