2

前言

前段时间和室友闹剧荒,于是萌生出一种做个私人化推荐系统想法。(用户就我们这一个宿舍)而其中电影的资源则是选择来自有大量电影电视剧信息的豆瓣。

目前,电影的信息已经抓取完毕,共有11159条JSON格式的数据,内容包括:

  • 题目

  • 时长

  • 类型

  • 导演

  • 主演

  • 地区

  • 评分

  • 2-3条短评

期间自己琢磨着一些推荐系统的算法,但又不想让这一万多条空闲着,于是期间跑了一个简单的数据分析的脚本,没有高大上的算法,只是做了简单的统计。好吧,我承认我题目起DM二字确实有标题党de意思。如果你还是感兴趣,欢迎往下看。


爬虫

应对反爬虫机制

目前来说豆瓣的反爬虫机制算是可以接受。你只需做到以下两点获取信息应该不成问题。

  • 请求带上头部信息,尤其记得带上自己的cookie。

  • 请求次数别太频繁,除非你的爬虫可以破解豆瓣的验证码问题。

任务队列

我的爬虫采用了广度优先的做法。你在获取一个电影页面的时候,同时会带有同类或相似影片的连接,将这些当成下一个访问点。

在访问的时候,你可能会遇到超时的问题,这时不要舍弃该URL,应对捕获超时异常后重新将URL回到任务队列的尾部,如果你直接舍弃了这个URL,会导致最后的结果有严重的数据缺失。比如我在第一次没考虑到这点,就只爬取到5000多条,少了将近一半。

另外一个要考虑到的就是,你必须记录已经访问过的URL,否则你的爬虫就会一直在死循环。

做到以上,应该就没太大的问题了。


数据分析结果

现在我们想看看演员和好片,烂片之间的关系(各选出前5名)。

现在以7分为标准

小于7分的

BAD

大于7分的

GOOD

全部都是日本演员的名称。这里的补充说明一下,因为豆瓣并无显著信息表明是电视剧还是电影,所以
这数据在意料之外,比如说为什么好片没有某些美国演员的名字,坏片没有某些演员的名字,都可能是因为数据集中不仅仅是电影信息,同时混杂了大量的日剧信息有关。

不过当我把评价标准降低到5分时倒是发生了好玩的事情。

大于5分的
GOOD2
可以说,变化不算特别的大,然后我们再看看小于5分的,前5名演员

BAD2
呵呵……

然后我们再来看看在5分的情况下,地区与好片,烂片的关系。

先来看好的

GOOD3

这张图就有些符合我们的预期了,接下来再看看坏的。

BAD3

我只能说这个更是在意料之中了。就个人感受来说,国产虽然近年有所好转,不过明显还得继续努力……

接下来可以看看类型和影片时长的关系,在每个时间段中,选出前5名做代表。

TYPEANDRUNTIME

每个时间段中,选出数量最多的前五名,制成饼状图,一目了然。可以发现其实每个时间段中剧情这个类别都是占了最大份额,平常看片的时候就感觉剧情这个分类莫名其妙,你要我说,我也实在说不出啥这类型片有啥特征。

后话

在知乎的回答

其实我还做了,像导演和好片烂片的关系,时长和地区的关系等等,这里碍于篇幅,不一一举例了,感兴趣的可以到我的github上获取爬虫和数据分析的脚本。

github地址

这个项目会记录我学习机器学习和数据挖掘这个过程的一些小作品,关于github上的BetaMeow的介绍可以看这里,至于本文说的内容在DouBanMovie的目录下。

如果你也有ML或DM的作品或小项目,欢迎推荐给我,我们可以互相给出友情链接,互相交流学习。如果你只是单纯对我的项目感兴趣,也欢迎watch或star支持一下,谢谢大家。


肥肥的兔子
1.4k 声望177 粉丝

python忠实粉丝,贱贱的……