豆瓣API说明
豆瓣为开发者提供了用于应用开发的Api接口,通过这些Api接口可以获得豆瓣的部分内容。
豆瓣Api V2认证使用了OAuth2,使得用户的授权过程更为安全,返回数据的格式为json,便于应用开发者解析获得的数据。豆瓣没有提供官方的SDK,但是提供了其他非官方的基于多种语言的SDK,我们采用了Java语言的SDK。由于该版本的Java SDK基于较早的豆瓣API的v1版本,所以需要进行部分修改适应新的v2版本,其中我们修改了电影相关的代码(新的源代码)。
Java SDK为Maven工程,可以使用Maven编译打包:
|
|
/v2/movie/top250
|
|
/v2/movie/subject/:id
|
|
在获取电影信息时,我们同时利用哈希集统计了演员的ID和导演的ID,目的是为了进一步统计影人的具体信息。
在这里需要注意的是,豆瓣为了防止恶意访问,对每分钟请求的次数进行了限制,官方文档说为40次/分钟,经过实验发现,这个时间并不准确,最后我们采用3s一次的请求进行了连续的访问。如果请求次数过度频繁,则会出现警告页面,同时导致在该IP下若干小时内无法继续访问。
最后获取的电影信息部分结果如下所示(id,名称,平分,演员id集合,导演id集合,国家,标签集合,发行年份):
1292052 肖申克的救赎 9.6 1054521#1054534#1041179#1000095 1047973 美国 犯罪#剧情 1994
1295644 这个杀手不太冷 9.4 1025182#1054454#1010507#1019050 1031876 法国 剧情#动作#犯罪 1994
1292720 阿甘正传 9.4 1054450#1002676#1031848#1031912 1053564 美国 剧情#爱情 1994
1291546 霸王别姬 9.4 1003494#1050265#1035641#1000905 1023040 中国大陆#香港 剧情#爱情#同性 1993
1292063 美丽人生 9.4 1041004#1000375#1000368#1082051 1041004 意大利 剧情#战争 1997
1292001 海上钢琴师 9.2 1025176#1010659#1027407#1009391 1018983 意大利 剧情#音乐 1998
1295124 辛德勒的名单 9.4 1031220#1054393#1006956#1041165 1054440 美国 剧情#历史#战争 1993
1291561 千与千寻 9.2 1023337#1005438#1045797#1025558 1054439 日本 剧情#动画#奇幻 2001
2131459 机器人总动员 9.3 1009535#1000389#1018022#1049585 1036450 美国 喜剧#爱情#科幻 2008
1292722 泰坦尼克号 9.1 1041029#1054446#1031864#1010555 1022571 美国 剧情#爱情#灾难 1997
3541415 盗梦空间 9.2 1041029#1101703#1012520#1027181 1054524 美国#英国 剧情#动作#科幻 2010
3793023 三傻大闹宝莱坞 9.1 1031931#1049635#1018290#1032430 1286677 印度 剧情#喜剧#爱情 2009
其中所有的演员和导演的信息用豆瓣赋予的ID表示,ID是豆瓣采用的唯一标示影人的序号。由于豆瓣提供的电影信息内容不完全规范,同一个影人可能在不同电影中使用了不同的名字,例如名字拼写、翻译不同,所以采用ID而不是影人的名字来进行数据分析。
获取影人信息
因为需要对男女演员进行分别统计,所以我们对影人的详细信息又进行了获取,代码实现如下:
|
|
获取的部分演员信息如下(id,名字,性别):
1054521 蒂姆·罗宾斯 男
1054534 摩根·弗里曼 男
1041179 鲍勃·冈顿 男
1000095 威廉姆·赛德勒 男
1025182 让·雷诺 男
1054454 娜塔莉·波特曼 女
1010507 加里·奥德曼 男
1019050 丹尼·爱罗 男
1054450 汤姆·汉克斯 男
1002676 罗宾·怀特 女
1031848 加里·西尼斯 男
1031912 麦凯尔泰·威廉逊 男
1003494 张国荣 男
1050265 张丰毅 男
1035641 巩俐 女
获取的导演信息如下:
1047973 弗兰克·德拉邦特 男
1031876 吕克·贝松 男
1053564 罗伯特·泽米吉斯 男
1023040 陈凯歌 男
1041004 罗伯托·贝尼尼 男
1018983 朱塞佩·托纳多雷 男
1054440 史蒂文·斯皮尔伯格 男
1054439 宫崎骏 男
数据完善
需要注意的是,获取的源数据形式并不规范,影人的名字格式多样,有的影人没有性别信息,所以对源数据进行过滤修正。