使用Apache Spark分析豆瓣电影数据

jopen 9年前

上周在看豆瓣的时候,看到有豆列推荐类似豆瓣250的电影,刚好最近在学Berkeley 的Scalable Machine Learning这门课程,接触了下Spark的基本的操作,然后就想要不然自己抓取豆瓣的电影数据来分析下。

本来是想实践下豆瓣电影的推荐系统,想通过实际的数据来完成”Collaborative filtering”, 目前的第一步就是先获取数据,这也是这篇博文的主要内容。如果有兴趣的同学,后续可以一起来实现豆瓣电影的推荐系统。

数据抓取

整个过程比较麻烦的其实就是数据的抓取,虽然豆瓣有提供API来获取某部电影的一些数据,但是前提是要知道这部电影的ID,而豆瓣又不提供这样的API来获取电影ID列表,所以才决定自己用Python来爬取基本的电影数据。主要是用requests和BeautifulSoup这两个Python包来抓取和分析页面。获取电影页面数据后进行解析,目前主要解析的下面十个字段:

- 电影名称  - 电影的豆瓣ID  - 评分  - 上映时间  - 评论条数  - 观看人数  - 想看人数  - 评价人数  - IMDB的链接  - 豆瓣的链接

豆瓣对机器人访问有比较大的限制,如果不限制抓取速度的话,爬虫一打开就会被豆瓣封掉IP。测试了几遍,发现每五秒钟抓取一次页面目前还不会被封掉。运行脚本大概一周后,抓取到了差不多52000条记录。豆瓣的影库数据应该远远大于这个数目,不过我是通过豆瓣的豆列来进行抓取,抓取的都是存在于某个豆列里面的电影,也就是说至少是被人推荐过一次的。所以基于这个数据,应该可以大概分析出豆瓣电影的一点点趋势。

使用Spark进行电影数据分析

fileName1 = 'movie_db20150704_134611.csv'  numPartitions = 4  rawData1 = sc.textFile(fileName1, numPartitions)  header1 = rawData1.first()   rawData1 = rawData1.filter(lambda x:x !=header) #filter out header


Spark在进行数据分析确实是比较方便快捷的,下面可以看到很容易就能够获取各种排名:

评分最高的前50部电影(评论人数超过50000)

topMovieswithRating = (data                         .filter(lambda x: x[8]>50000)                         .takeOrdered(50, lambda x: -1 * float(x[0])))


Title Rating Number of Comments Number of Wacthed Number of Want to Watch Number of Votes Douban Link
肖申克的救赎 The Shawshank Redemption 9.6 141337 842229 56968 623098 link
银魂 銀魂 9.6 11139 47974 9124 50448 link
权力的游戏 第四季 Game of Thrones Season 4 9.6 13739 55192 12245 51858 link
老友记 第一季 Friends Season 1 9.6 20944 124889 16745 101114 link
海贼王 ワンピース 9.5 8037 41784 6538 56323 link
灌篮高手 スラムダンク 9.5 15340 101749 3039 78928 link
神探夏洛克 第二季 Sherlock Season 2 9.5 45985 173364 12523 153311 link
辛德勒的名单 Schindler’s List 9.4 46317 382557 87776 275190 link
这个杀手不太冷 Léon 9.4 133055 808799 48445 593659 link
阿甘正传 Forrest Gump 9.4 100699 739958 38595 524104 link
美丽人生 La vita è bella 9.4 69507 388258 99570 288216 link
霸王别姬 9.4 106586 575374 52104 426194 link
权力的游戏 第三季 Game of Thrones Season 3 9.4 17200 72102 14753 65464 link
权力的游戏 第二季 Game of Thrones Season 2 9.4 17802 83881 11036 74563 link
东京爱情故事 東京ラブストーリー 9.4 17612 81242 21844 63821 link
泰坦尼克号 3D版 Titanic 3D 9.4 63975 190092 25596 151764 link
生活大爆炸 第一季 The Big Bang Theory Season 1 9.4 27088 184938 17693 161098 link
生活大爆炸 第二季 The Big Bang Theory Season 2 9.4 10843 131561 4067 110995 link
十二怒汉 12 Angry Men 9.3 33913 143237 73021 114034 link
机器人总动员 WALL·E 9.3 85602 485283 48864 382396 link
权力的游戏 第一季 Game of Thrones Season 1 9.3 30249 125542 41429 113192 link
海豚湾 The Cove 9.3 43600 187693 68444 148785 link
黑镜 第一季 Black Mirror Season 1 9.3 52316 169298 39010 147980 link
回忆积木小屋 つみきのいえ 9.3 22996 108642 32253 89460 link
哆啦A梦 ドラえもん 9.3 6621 80673 1049 59935 link
生活大爆炸 第三季 The Big Bang Theory Season 3 9.3 11873 118474 5583 105567 link
西游记 9.3 6912 67233 315 51874 link
盗梦空间 Inception 9.2 162115 753827 73145 584052 link
教父 The Godfather 9.2 46951 347332 79670 249151 link
放牛班的春天 Les choristes 9.2 70184 457118 57539 336110 link
乱世佳人 Gone with the Wind 9.2 43536 296995 56178 207966 link
忠犬八公的故事 Hachi: A Dog’s Tale 9.2 97523 402329 46032 310311 link
海上钢琴师 La leggenda del pianista sull’oceano 9.2 98015 626772 63889 458728 link
越狱 第一季 Prison Break Season 1 9.2 18390 137942 7021 101062 link
大闹天宫 9.2 8253 93822 12303 64411 link
父与女 Father and Daughter 9.2 11727 63925 18511 50776 link
千与千寻 千と千尋の神隠し 9.2 90802 644317 31794 472642 link
越狱兔 第一季 ウサビッチ 9.2 12098 78612 10757 64103 link
暴力云与送子鹳 Partly Cloudy 9.2 15022 90791 14291 73383 link
傲慢与偏见 Pride and Prejudice 9.2 17526 87239 23093 65799 link
夏目友人帐 夏目友人帳 9.2 16190 71643 13820 63324 link
深夜食堂 9.2 22940 79537 41841 72377 link
神探夏洛克 第一季 Sherlock Season 1 9.2 54122 205429 17410 181560 link
唐顿庄园 第一季 Downton Abbey Season 1 9.2 22512 87749 25736 77411 link
调音师 L’accordeur 9.2 26876 119673 26648 96166 link
舌尖上的中国 9.2 26079 96489 22151 87629 link
生活大爆炸 第四季 The Big Bang Theory Season 4 9.2 13263 103311 8486 91161 link
胜者即是正义 リーガル・ハイ 9.2 28175 80048 20073 73679 link
三傻大闹宝莱坞 3 Idiots 9.1 151969 638544 40899 497801 link
七武士 七人の侍 9.1 12463 70214 44283 51947 link

观看人数最多的前五十部电影

Title Rating Number of Comments Number of Wacthed Number of Want to Watch Number of Votes Douban Link
肖申克的救赎 The Shawshank Redemption 9.6 141337 842229 56968 623098 link
这个杀手不太冷 Léon 9.4 133055 808799 48445 593659 link
盗梦空间 Inception 9.2 162115 753827 73145 584052 link
阿甘正传 Forrest Gump 9.4 100699 739958 38595 524104 link
泰坦尼克号 Titanic 9.1 84893 683080 15375 486089 link
让子弹飞 8.7 135963 644641 30064 497060 link
千与千寻 千と千尋の神隠し 9.2 90802 644317 31794 472642 link
三傻大闹宝莱坞 3 Idiots 9.1 151969 638544 40899 497801 link
海上钢琴师 La leggenda del pianista sull’oceano 9.2 98015 626772 63889 458728 link
霸王别姬 9.4 106586 575374 52104 426194 link
当幸福来敲门 The Pursuit of Happyness 8.9 80895 560865 44578 410343 link
少年派的奇幻漂流 Life of Pi 9.0 170423 544637 61950 446159 link
阿凡达 Avatar 8.6 100838 541716 34928 417663 link
那些年,我们一起追的女孩 那些年,我們一起追的女孩 8.2 151908 536664 43994 411410 link
天使爱美丽 Le fabuleux destin d’Amélie Poulain 8.8 83473 533739 56960 381583 link
剪刀手爱德华 Edward Scissorhands 8.7 73052 530747 50151 380842 link
飞屋环游记 Up 8.9 91588 499169 49408 387636 link
机器人总动员 WALL·E 9.3 85602 485283 48864 382396 link
怦然心动 Flipped 8.9 127491 481393 99656 374024 link
初恋这件小事 สิ่งเล็กเล็กที่เรียกว่า…รัก 8.3 121641 467763 29490 350104 link
七宗罪 Se7en 8.7 61485 460708 55663 340300 link
放牛班的春天 Les choristes 9.2 70184 457118 57539 336110 link
人再囧途之泰囧 7.5 145311 448220 22759 370422 link
大话西游之大圣娶亲 西遊記大結局之仙履奇緣 9.1 58615 445066 13452 323383 link
贫民窟的百万富翁 Slumdog Millionaire 8.5 49011 436343 32068 322084 link
失恋33天 7.4 118477 430269 18114 328205 link
龙猫 となりのトトロ 9.1 64942 428001 34193 310626 link
罗马假日 Roman Holiday 8.9 55419 421273 40473 293538 link
搏击俱乐部 Fight Club 9.0 79860 418418 71950 319263 link
黑天鹅 Black Swan 8.5 97531 418196 62953 320245 link
楚门的世界 The Truman Show 8.9 65797 411014 57051 310292 link
忠犬八公的故事 Hachi: A Dog’s Tale 9.2 97523 402329 46032 310311 link
大话西游之月光宝盒 西遊記第壹佰零壹回之月光寶盒 8.9 32830 395863 7966 280776 link
源代码 Source Code 8.3 92760 394414 46747 313237 link
本杰明·巴顿奇事 The Curious Case of Benjamin Button 8.7 62409 393735 52367 302425 link
无间道 無間道 8.9 40211 392606 13778 278945 link
蝴蝶效应 The Butterfly Effect 8.6 60909 390474 51039 290347 link
美丽人生 La vita è bella 9.4 69507 388258 99570 288216 link
辛德勒的名单 Schindler’s List 9.4 46317 382557 87776 275190 link
情书 Love Letter 8.8 69072 379806 67039 271368 link
北京遇上西雅图 7.4 125144 373645 30896 307679 link
V字仇杀队 V for Vendetta 8.8 81751 373608 66266 296830 link
沉默的羔羊 The Silence of the Lambs 8.7 44675 361751 45509 259880 link
后会无期 7.2 142335 359491 34967 319570 link
穿普拉达的女王 The Devil Wears Prada 7.9 45481 355724 16998 259046 link
两小无猜 Jeux d’enfants 8.2 74602 352503 78859 260382 link
加勒比海盗 Pirates of the Caribbean: The Curse of the Black Pearl 8.5 29434 350664 9678 249799 link
致我们终将逝去的青春 6.7 137377 349601 28867 292338 link
教父 The Godfather 9.2 46951 347332 79670 249151 link
星际穿越 Interstellar 9.1 133645 345946 48357 308697 link

评分人数最多的前五十部电影

Title Rating Number of Comments Number of Wacthed Number of Want to Watch Number of Votes Douban Link
肖申克的救赎 The Shawshank Redemption 9.6 141337 842229 56968 623098 link
这个杀手不太冷 Léon 9.4 133055 808799 48445 593659 link
盗梦空间 Inception 9.2 162115 753827 73145 584052 link
阿甘正传 Forrest Gump 9.4 100699 739958 38595 524104 link
三傻大闹宝莱坞 3 Idiots 9.1 151969 638544 40899 497801 link
让子弹飞 8.7 135963 644641 30064 497060 link
泰坦尼克号 Titanic 9.1 84893 683080 15375 486089 link
千与千寻 千と千尋の神隠し 9.2 90802 644317 31794 472642 link
海上钢琴师 La leggenda del pianista sull’oceano 9.2 98015 626772 63889 458728 link
少年派的奇幻漂流 Life of Pi 9.0 170423 544637 61950 446159 link
霸王别姬 9.4 106586 575374 52104 426194 link
阿凡达 Avatar 8.6 100838 541716 34928 417663 link
那些年,我们一起追的女孩 那些年,我們一起追的女孩 8.2 151908 536664 43994 411410 link
当幸福来敲门 The Pursuit of Happyness 8.9 80895 560865 44578 410343 link
飞屋环游记 Up 8.9 91588 499169 49408 387636 link
机器人总动员 WALL·E 9.3 85602 485283 48864 382396 link
天使爱美丽 Le fabuleux destin d’Amélie Poulain 8.8 83473 533739 56960 381583 link
剪刀手爱德华 Edward Scissorhands 8.7 73052 530747 50151 380842 link
怦然心动 Flipped 8.9 127491 481393 99656 374024 link
人再囧途之泰囧 7.5 145311 448220 22759 370422 link
初恋这件小事 สิ่งเล็กเล็กที่เรียกว่า…รัก 8.3 121641 467763 29490 350104 link
七宗罪 Se7en 8.7 61485 460708 55663 340300 link
放牛班的春天 Les choristes 9.2 70184 457118 57539 336110 link
失恋33天 7.4 118477 430269 18114 328205 link
大话西游之大圣娶亲 西遊記大結局之仙履奇緣 9.1 58615 445066 13452 323383 link
贫民窟的百万富翁 Slumdog Millionaire 8.5 49011 436343 32068 322084 link
黑天鹅 Black Swan 8.5 97531 418196 62953 320245 link
后会无期 7.2 142335 359491 34967 319570 link
搏击俱乐部 Fight Club 9.0 79860 418418 71950 319263 link
源代码 Source Code 8.3 92760 394414 46747 313237 link
龙猫 となりのトトロ 9.1 64942 428001 34193 310626 link
忠犬八公的故事 Hachi: A Dog’s Tale 9.2 97523 402329 46032 310311 link
楚门的世界 The Truman Show 8.9 65797 411014 57051 310292 link
星际穿越 Interstellar 9.1 133645 345946 48357 308697 link
北京遇上西雅图 7.4 125144 373645 30896 307679 link
本杰明·巴顿奇事 The Curious Case of Benjamin Button 8.7 62409 393735 52367 302425 link
V字仇杀队 V for Vendetta 8.8 81751 373608 66266 296830 link
罗马假日 Roman Holiday 8.9 55419 421273 40473 293538 link
致我们终将逝去的青春 6.7 137377 349601 28867 292338 link
蝴蝶效应 The Butterfly Effect 8.6 60909 390474 51039 290347 link
西游降魔篇 西遊降魔篇 7.1 127261 343244 20300 289856 link
中国合伙人 7.7 122422 344302 28713 289551 link
美丽人生 La vita è bella 9.4 69507 388258 99570 288216 link
大话西游之月光宝盒 西遊記第壹佰零壹回之月光寶盒 8.9 32830 395863 7966 280776 link
疯狂原始人 The Croods 8.8 103628 334933 40483 280235 link
无间道 無間道 8.9 40211 392606 13778 278945 link
辛德勒的名单 Schindler’s List 9.4 46317 382557 87776 275190 link
神偷奶爸 Despicable Me 8.5 77588 342700 45520 273572 link
情书 Love Letter 8.8 69072 379806 67039 271368 link
志明与春娇 志明與春嬌 8.0 78814 342365 40588 262890 link

评论人数最多的前五十部电影

Title Rating Number of Comments Number of Wacthed Number of Want to Watch Number of Votes Douban Link
少年派的奇幻漂流 Life of Pi 9.0 170423 544637 61950 446159 link
盗梦空间 Inception 9.2 162115 753827 73145 584052 link
三傻大闹宝莱坞 3 Idiots 9.1 151969 638544 40899 497801 link
那些年,我们一起追的女孩 那些年,我們一起追的女孩 8.2 151908 536664 43994 411410 link
人再囧途之泰囧 7.5 145311 448220 22759 370422 link
后会无期 7.2 142335 359491 34967 319570 link
肖申克的救赎 The Shawshank Redemption 9.6 141337 842229 56968 623098 link
致我们终将逝去的青春 6.7 137377 349601 28867 292338 link
让子弹飞 8.7 135963 644641 30064 497060 link
星际穿越 Interstellar 9.1 133645 345946 48357 308697 link
这个杀手不太冷 Léon 9.4 133055 808799 48445 593659 link
怦然心动 Flipped 8.9 127491 481393 99656 374024 link
西游降魔篇 西遊降魔篇 7.1 127261 343244 20300 289856 link
北京遇上西雅图 7.4 125144 373645 30896 307679 link
中国合伙人 7.7 122422 344302 28713 289551 link
初恋这件小事 สิ่งเล็กเล็กที่เรียกว่า…รัก 8.3 121641 467763 29490 350104 link
失恋33天 7.4 118477 430269 18114 328205 link
小时代 4.8 110064 248393 15791 214488 link
霸王别姬 9.4 106586 575374 52104 426194 link
疯狂原始人 The Croods 8.8 103628 334933 40483 280235 link
一代宗师 一代宗師 7.6 102798 266748 33413 220646 link
阿凡达 Avatar 8.6 100838 541716 34928 417663 link
阿甘正传 Forrest Gump 9.4 100699 739958 38595 524104 link
金陵十三钗 8.0 100207 320259 23262 262469 link
环太平洋 Pacific Rim 7.7 99771 245275 20924 212646 link
云图 Cloud Atlas 8.0 98048 282090 68646 233508 link
海上钢琴师 La leggenda del pianista sull’oceano 9.2 98015 626772 63889 458728 link
黑天鹅 Black Swan 8.5 97531 418196 62953 320245 link
忠犬八公的故事 Hachi: A Dog’s Tale 9.2 97523 402329 46032 310311 link
超能陆战队 Big Hero 6 8.6 97143 250191 26722 222573 link
复仇者联盟 The Avengers 8.0 95426 303732 27233 250229 link
源代码 Source Code 8.3 92760 394414 46747 313237 link
飞屋环游记 Up 8.9 91588 499169 49408 387636 link
千与千寻 千と千尋の神隠し 9.2 90802 644317 31794 472642 link
告白 8.6 89816 305822 53544 245370 link
春娇与志明 春嬌與志明 7.4 89322 284180 18987 219765 link
一天 One Day 7.8 88567 294199 73357 226476 link
地心引力 Gravity 7.8 88240 231236 32028 199942 link
触不可及 Intouchables 9.1 86407 317155 96935 256223 link
冰雪奇缘 Frozen 8.3 85908 244021 22337 211905 link
机器人总动员 WALL·E 9.3 85602 485283 48864 382396 link
泰坦尼克号 Titanic 9.1 84893 683080 15375 486089 link
王牌特工:特工学院 Kingsman: The Secret Service 8.5 84815 209221 35782 187950 link
消失的爱人 Gone Girl 8.7 84207 222242 66274 193293 link
蝙蝠侠:黑暗骑士崛起 The Dark Knight Rises 8.5 83863 270297 32502 220967 link
天使爱美丽 Le fabuleux destin d’Amélie Poulain 8.8 83473 533739 56960 381583 link
搜索 7.3 82944 230973 13953 189159 link
V字仇杀队 V for Vendetta 8.8 81751 373608 66266 296830 link
了不起的盖茨比 The Great Gatsby 7.6 81670 240879 63554 200915 link
当幸福来敲门 The Pursuit of Happyness 8.9 80895 560865 44578 410343 link

后续

希望能够和在学习machine leaning的同学们一起来实现下豆瓣电影的推荐系统,更详细的了解”Collaborative filtering“ 的实现。 目前虽然抓取了一些数据,但是还是远远不够:

  • 目前仅抓取的公开的电影数据,已经有了五万多条,但是还是不够多,而且属性列也还不够
  • 还无法抓取单个用户的评分数据, 这个还需想办法
来自:http://www.robinliu.net/2015/07/11/douban/