Python 爬取豆瓣电影Top250

文章目录

  • 最终输出效果
  • 运行环境
  • html代码格式化
  • 完整代码
  • 代码分析
    • 相关知识介绍
    • 获取页面的html数据-->get_response_bs_data()
    • 取得影片名称-->get_film_name()
    • 取得得分和评价人数-->get_film_score_and_estimator_count()
    • 取得电影slogan-->get_film_slogan()
    • 打印当前页面影片信息-->print_film_info()
    • 打印所有页面影片信息

初学Python,仅以爬取经典的豆瓣250大电影为例,记录一下Python的学习历程。

最终输出效果

打印出电影名称、评分、评分人数、电影slogan,最终的输出效果如下:

"C:\Program Files\Python36\python.exe" D:/PythonProject/TestProject/test_douban_first.py
第1[肖申克的救赎] [9.7] (2312755人评价) <希望让人自由。>2[霸王别姬] [9.6] (1716162人评价) <风华绝代。>3[阿甘正传] [9.5] (1739769人评价) <一部美国近现代史。>4[这个杀手不太冷] [9.4] (1919041人评价) <怪蜀黍和小萝莉不得不说的故事。>5[泰坦尼克号] [9.4] (1702055人评价) <失去的才是永恒的。 >6[美丽人生] [9.5] (1072978人评价) <最美的谎言。>7[千与千寻] [9.4] (1818390人评价) <最好的宫崎骏,最好的久石让。 >8[辛德勒的名单] [9.5] (888074人评价) <拯救一个人,就是拯救整个世界。>9[盗梦空间] [9.3] (1684758人评价) <诺兰给了我们一场无法盗取的梦。>10[忠犬八公的故事] [9.4] (1155808人评价) <永远都不能忘记你所爱的人。>11[星际穿越] [9.3] (1357156人评价) <爱是一种力量,让我们超越时空感知它的存在。>12[楚门的世界] [9.3] (1270811人评价) <如果再也不能见到你,祝你早安,午安,晚安。>13[海上钢琴师] [9.3] (1368999人评价) <每个人都要走一条自己坚定了的路,就算是粉身碎骨。 >14[三傻大闹宝莱坞] [9.2] (1537511人评价) <英俊版憨豆,高情商版谢耳朵。>15[机器人总动员] [9.3] (1082688人评价) <小瓦力,大人生。>16[放牛班的春天] [9.3] (1065531人评价) <天籁一般的童声,是最接近上帝的存在。 >17[大话西游之大圣娶亲] [9.2] (1241953人评价) <一生所爱。>18[疯狂动物城] [9.2] (1500420人评价) <迪士尼给我们营造的乌托邦就是这样,永远善良勇敢,永远出乎意料。>19[无间道] [9.2] (1029012人评价) <香港电影史上永不过时的杰作。>20[熔炉] [9.3] (754927人评价) <我们一路奋战不是为了改变世界,而是为了不让世界改变我们。>21[教父] [9.3] (755147人评价) <千万不要记恨你的对手,这样会让你失去理智。>22[当幸福来敲门] [9.1] (1235052人评价) <平民励志片。 >23[龙猫] [9.2] (1030158人评价) <人人心中都有个龙猫,童年就永远不会消失。>24[怦然心动] [9.1] (1456553人评价) <真正的幸福是来自内心深处。>25[控方证人] [9.6] (356911人评价) <比利·怀德满分作品。>26[触不可及] [9.2] (803566人评价) <满满温情的高雅喜剧。>27[蝙蝠侠:黑暗骑士] [9.2] (841907人评价) <无尽的黑暗。>28[末代皇帝] [9.3] (642058人评价) <“不要跟我比惨,我比你更惨”再适合这部电影不过了。>29[寻梦环游记] [9.1] (1275350人评价) <死亡不是真的逝去,遗忘才是永恒的消亡。>30[活着] [9.3] (653430人评价) <张艺谋最好的电影。>31[何以为家] [9.1] (806473人评价) <凝视卑弱生命,用电影改变命运。>32[乱世佳人] [9.3] (555563人评价) <Tomorrow is another day.>33[指环王3:王者无敌] [9.2] (611211人评价) <史诗的终章。>34[哈利·波特与魔法石] [9.1] (855397人评价) <童话世界的开端。>35[飞屋环游记] [9.0] (1077642人评价) <最后那些最无聊的事情,才是最值得怀念的。 >36[摔跤吧!爸爸] [9.0] (1272400人评价) <你不是在为你一个人战斗,你要让千千万万的女性看到女生并不是只能相夫教子。>37[素媛] [9.3] (529794人评价) <受过伤害的人总是笑得最开心,因为他们不愿意让身边的人承受一样的痛苦。>38[少年派的奇幻漂流] [9.1] (1129328人评价) <瑰丽壮观、无人能及的冒险之旅。>39[十二怒汉] [9.4] (371689人评价) <1957年的理想主义。 >40[哈尔的移动城堡] [9.1] (799591人评价) <带着心爱的人在天空飞翔。>41[鬼子来了] [9.3] (497020人评价) <对敌人的仁慈,就是对自己残忍。>42[大话西游之月光宝盒] [9.0] (988109人评价) <旷古烁今。>43[天空之城] [9.1] (676531人评价) <对天空的追逐,永不停止。 >44[我不是药神] [9.0] (1692995人评价) <对我们国家而言,这样的电影多一部是一部。>45[罗马假日] [9.0] (784309人评价) <爱情哪怕只有一天。>46[闻香识女人] [9.1] (686886人评价) <史上最美的探戈。>47[辩护人] [9.2] (490794人评价) <电影的现实意义大过电影本身。>48[天堂电影院] [9.2] (515390人评价) <那些吻戏,那些青春,都在影院的黑暗里被泪水冲刷得无比清晰。>49[猫鼠游戏] [9.0] (707084人评价) <骗子大师和执著警探的你追我跑故事。 >50[大闹天宫] [9.4] (330187人评价) <经典之作,历久弥新。>51[搏击俱乐部] [9.0] (692022人评价) <邪恶与平庸蛰伏于同一个母体,在特定的时间互相对峙。>52[教父2] [9.2] (423327人评价) <优雅的孤独。>53[狮子王] [9.0] (663248人评价) <动物版《哈姆雷特》。>54[钢琴家] [9.2] (441570人评价) <音乐能化解仇恨。>55[指环王2:双塔奇兵] [9.1] (558617人评价) <承前启后的史诗篇章。>56[死亡诗社] [9.1] (558860人评价) <当一个死水般的体制内出现一个活跃的变数时,所有的腐臭都站在了光明的对面。>57[黑客帝国] [9.0] (643196人评价) <视觉革命。>58[指环王1:魔戒再现] [9.0] (626438人评价) <传说的开始。>59[绿皮书] [8.9] (1250154人评价) <去除成见,需要勇气。>60[饮食男女] [9.1] (471509人评价) <人生不能像做菜,把所有的料都准备好了才下锅。>61[让子弹飞] [8.9] (1299708人评价) <你给我翻译翻译,神马叫做TMD的惊喜。>62[美丽心灵] [9.0] (610515人评价) <爱是一切逻辑和原由。>63[窃听风暴] [9.2] (453079人评价) <别样人生。>64[两杆大烟枪] [9.1] (487823人评价) <4个臭皮匠顶个诸葛亮,盖·里奇果然不是盖的。>65[海蒂和爷爷] [9.2] (359329人评价) <如果生活中有什么使你感到快乐,那就去做吧!不要管别人说什么。>66[本杰明·巴顿奇事] [8.9] (791734人评价) <在时间之河里感受溺水之苦。>67[看不见的客人] [8.8] (968891人评价) <你以为你以为的就是你以为的。>68[飞越疯人院] [9.1] (466658人评价) <自由万岁。>69[西西里的美丽传说] [8.9] (784531人评价) <美丽无罪。>70[穿条纹睡衣的男孩] [9.1] (412089人评价) <尽管有些不切实际的幻想,这部电影依旧是一部感人肺腑的佳作。>71[拯救大兵瑞恩] [9.0] (519530人评价) <美利坚精神输出大片No1.>72[小鞋子] [9.2] (325516人评价) <奔跑的孩子是天使。>73[音乐之声] [9.1] (481144人评价) <用音乐化解仇恨,让歌声串起美好。>74[情书] [8.9] (725109人评价) <暗恋的极致。>75[海豚湾] [9.3] (306459人评价) <海豚的微笑,是世界上最高明的伪装。>76[美国往事] [9.2] (333685人评价) <往事如烟,无处祭奠。>77[致命魔术] [8.9] (691661人评价) <孪生蝙蝠侠大战克隆金刚狼。>78[阿凡达] [8.8] (1118214人评价) <绝对意义上的美轮美奂。>79[沉默的羔羊] [8.9] (685220人评价) <安东尼·霍普金斯的顶级表演。>80[禁闭岛] [8.8] (761292人评价) <昔日翩翩少年,今日大腹便便。>81[低俗小说] [8.9] (667317人评价) <故事的高级讲法。>82[蝴蝶效应] [8.8] (749500人评价) <人的命运被自己瞬间的抉择改变。>83[心灵捕手] [8.9] (564027人评价) <人生中应该拥有这样的一段豁然开朗。>84[布达佩斯大饭店] [8.9] (713636人评价) <小清新的故事里注入了大历史的情怀。>85[七宗罪] [8.8] (779045人评价) <警察抓小偷,老鼠玩死猫。>86[春光乍泄] [8.9] (501790人评价) <爱情纠缠,男女一致。>87[哈利·波特与死亡圣器()] [8.9] (624153人评价) <10年的完美句点。>88[摩登时代] [9.3] (231227人评价) <大时代中的人生,小人物的悲喜。>89[被嫌弃的松子的一生] [8.9] (591316人评价) <以戏谑来戏谑戏谑。>90[喜剧之王] [8.8] (770469人评价) <我是一个演员。>91[致命ID] [8.8] (642309人评价) <最不可能的那个人永远是最可能的。>92[杀人回忆] [8.9] (543562人评价) <关于连环杀人悬案的集体回忆。>93[剪刀手爱德华] [8.7] (883994人评价) <浪漫忧郁的成人童话。>94[加勒比海盗] [8.8] (702490人评价) <约翰尼·德普的独角戏。>95[勇敢的心] [8.9] (483421人评价) <史诗大片的典范。>96[狩猎] [9.1] (298621人评价) <人言可畏。>97[请以你的名字呼唤我] [8.9] (538779人评价) <沉醉在电影的情感和视听氛围中无法自拔。>98[天使爱美丽] [8.7] (836482人评价) <法式小清新。 >99[断背山] [8.8] (588413人评价) <每个人心中都有一座断背山。>100[红辣椒] [9.0] (338015人评价) <梦的勾结。>101[7号房的礼物] [8.9] (434497人评价) <《我是山姆》的《美丽人生》。>102[幽灵公主] [8.9] (434318人评价) <人与自然的战争史诗。>103[小森林 夏秋篇] [9.0] (340820人评价) <那些静得只能听见呼吸的日子里,你明白孤独即生活。>104[第六感] [8.9] (441601人评价) <深入内心的恐怖,出人意料的结局。>105[阳光灿烂的日子] [8.8] (500162人评价) <一场华丽的意淫。>106[重庆森林] [8.8] (637538人评价) <寂寞没有期限。>107[唐伯虎点秋香] [8.7] (843667人评价) <华太师是黄霑,吴镇宇四大才子之一。>108[超脱] [8.9] (390643人评价) <穷尽一生,我们要学会的,不过是彼此拥抱。>109[爱在黎明破晓前] [8.8] (496698人评价) <缘分是个连绵词,最美不过一瞬。>110[小森林 冬春篇] [9.0] (305953人评价) <尊敬他人,尊敬你生活的这片土地,明白孤独是人生的常态。>111[功夫] [8.7] (813336人评价) <警恶惩奸,维护世界和平这个任务就交给你了,好吗?>112[入殓师] [8.9] (477160人评价) <死可能是一道门,逝去并不是终结,而是超越,走向下一程。>113[一一] [9.1] (285860人评价) <我们都曾经是一一。>114[消失的爱人] [8.7] (723751人评价) <年度最佳date movie。>115[蝙蝠侠:黑暗骑士崛起] [8.8] (577027人评价) <诺兰就是保证。>116[菊次郎的夏天] [8.8] (456369人评价) <从没见过那么流氓的温柔,从没见过那么温柔的流氓。>117[人生果实] [9.5] (131342人评价) <土壤没有落叶不会肥沃,没有了你就不算人生。>118[侧耳倾听] [8.9] (370864人评价) <少女情怀总是诗。>119[倩女幽魂] [8.7] (590335人评价) <两张绝世的脸。 >120[无人知晓] [9.1] (232881人评价) <我的平常生活就是他人的幸福。>121[超能陆战队] [8.7] (808591人评价) <Balalala~~~>122[甜蜜蜜] [8.9] (419374人评价) <相逢只要一瞬间,等待却像是一辈子。>123[借东西的小人阿莉埃蒂] [8.8] (439036人评价) <曾经的那段美好会沉淀为一辈子的记忆。>124[萤火之森] [8.9] (411975人评价) <触不到的恋人。>125[哈利·波特与阿兹卡班的囚徒] [8.8] (495210人评价) <不一样的导演,不一样的哈利·波特。>126[完美的世界] [9.1] (223186人评价) <坏人的好总是比好人的好来得更感人。>127[爱在日落黄昏时] [8.8] (414606人评价) <九年后的重逢是世俗和责任的交叠,没了悸动和青涩,沧桑而温暖。>128[驯龙高手] [8.7] (615941人评价) <和谐的生活离不开摸头与被摸头。>129[玛丽和马克思] [8.9] (361304人评价) <你是我最好的朋友,你是我唯一的朋友 。>130[幸福终点站] [8.8] (439495人评价) <有时候幸福需要等一等。 >131[告白] [8.7] (576339人评价) <没有一人完全善,也没有一人完全恶。>132[大鱼] [8.8] (465092人评价) <抱着梦想而活着的人是幸福的,怀抱梦想而死去的人是不朽的。>133[阳光姐妹淘] [8.8] (500069人评价) <再多各自牛逼的时光,也比不上一起傻逼的岁月。 >134[射雕英雄传之东成西就] [8.7] (522772人评价) <百看不厌。 >135[天书奇谭] [9.2] (184379人评价) <传奇的年代,醉人的童话。>136[恐怖直播] [8.7] (521002人评价) <恐怖分子的“秋菊打官司”。>137[怪兽电力公司] [8.7] (527348人评价) <不要给它起名字,起了名字就有感情了。>138[神偷奶爸] [8.6] (784139人评价) <Mr. I Don't Care其实也有Care的时候。>139[哈利·波特与密室] [8.7] (519208人评价) <魔法的密室之门已打开...>140[玩具总动员3] [8.9] (406996人评价) <跨度十五年的欢乐与泪水。>141[傲慢与偏见] [8.6] (626424人评价) <爱是摈弃傲慢与偏见之后的曙光。>142[时空恋旅人] [8.8] (468341人评价) <把每天当作最后一天般珍惜度过,积极拥抱生活,就是幸福。>143[教父3] [8.9] (282521人评价) <任何信念的力量,都无法改变命运。>144[釜山行] [8.6] (938682人评价) <揭露人性的丧尸题材力作。>145[血战钢锯岭] [8.7] (645505人评价) <优秀的战争片不会美化战场,不会粉饰死亡,不会矮化敌人,不会无视常识,最重要的,不会宣扬战争。>146[哪吒闹海] [9.1] (202018人评价) <想你时你在闹海。>147[被解救的姜戈] [8.7] (484631人评价) <热血沸腾,那个低俗、性感的无耻混蛋又来了。>148[一个叫欧维的男人决定去死] [8.9] (329890人评价) <惠及一生的美丽。>149[七武士] [9.3] (153498人评价) <时代悲歌。>150[喜宴] [8.9] (273406人评价) <中国家庭的喜怒哀乐忍。>151[电锯惊魂] [8.7] (414370人评价) <真相就在眼前。>152[我是山姆] [8.9] (252114人评价) <爱并不需要智商 。>153[风之谷] [8.9] (302851人评价) <动画片的圣经。>154[头号玩家] [8.6] (1120242人评价) <写给影迷,动漫迷和游戏迷的一封情书。>155[英雄本色] [8.7] (415102人评价) <英雄泪短,兄弟情长。 >156[上帝之城] [9.0] (250719人评价) <被上帝抛弃了的上帝之城。>157[未麻的部屋] [9.0] (229305人评价) <好的剧本是,就算你猜到了结局也猜不到全部。>158[谍影重重3] [8.8] (344651人评价) <像吃了苏打饼一样干脆的电影。>159[疯狂原始人] [8.7] (700035人评价) <老少皆宜,这就是好莱坞动画的魅力。>160[卢旺达饭店] [8.9] (248367人评价) <当这个世界闭上双眼,他却敞开了怀抱。>161[纵横四海] [8.8] (330889人评价) <香港浪漫主义警匪动作片的巅峰之作。>162[三块广告牌] [8.7] (670165人评价) <怼天怼地,你走后,她与世界为敌。>163[花样年华] [8.7] (464865人评价) <偷情本没有这样美。>164[岁月神偷] [8.7] (495508人评价) <岁月流逝,来日可追。>165[达拉斯买家俱乐部] [8.8] (361799人评价) <Jared Leto的腿比女人还美!>166[模仿游戏] [8.7] (492743人评价) <他给机器起名“克里斯托弗”,因为这是他初恋的名字。>167[黑客帝国3:矩阵革命] [8.8] (344683人评价) <不得不说,《黑客帝国》系列是商业片与科幻、哲学完美结合的典范。>168[新世界] [8.9] (288580人评价) <要做就做得狠一点,这样才能活下去。>169[心迷宫] [8.7] (399309人评价) <荒诞讽刺,千奇百巧,抽丝剥茧,百转千回。>170[头脑特工队] [8.7] (477525人评价) <愿我们都不用长大,每一座城堡都能永远存在。>171[记忆碎片] [8.6] (498556人评价) <一个针管引发的血案。>172[忠犬八公物语] [9.2] (152734人评价) <养狗三日,便会对你终其一生。>173[荒蛮故事] [8.8] (344577人评价) <始于荒诞,止于更荒诞。>174[你的名字。] [8.4] (1111823人评价) <穿越错位的时空,仰望陨落的星辰,你没留下你的名字,我却无法忘记那句“我爱你”。>175[真爱至上] [8.6] (591175人评价) <爱,是个动词。>176[爆裂鼓手] [8.7] (453865人评价) <这个世界从不善待努力的人,努力了也不一定会成功,但是知道自己在努力,就是活下去的动力。>177[贫民窟的百万富翁] [8.6] (618389人评价) <上帝之城+猜火车+阿甘正传+开心辞典=山寨富翁>178[海街日记] [8.8] (334685人评价) <是枝裕和的家庭习作。>179[东邪西毒] [8.6] (479081人评价) <电影诗。>180[萤火虫之墓] [8.7] (347268人评价) <幸福是生生不息,却难以触及的远。 >181[惊魂记] [9.0] (201828人评价) <故事的反转与反转,分裂电影的始祖。>182[黑天鹅] [8.6] (679254人评价) <黑暗之美。>183[寄生虫] [8.7] (1101503人评价) <--等待添加-->184[无敌破坏王] [8.7] (428904人评价) <迪士尼和皮克斯拿错剧本的产物。>185[你看起来好像很好吃] [8.9] (273831人评价) <感情不分食草或者食肉。>186[冰川时代] [8.6] (506347人评价) <松鼠才是角儿。>187[小偷家族] [8.7] (668589人评价) <我们组成了家。>188[绿里奇迹] [8.9] (240784人评价) <天使暂时离开。>189[哈利·波特与火焰杯] [8.6] (447406人评价) <--等待添加-->190[雨人] [8.7] (335826人评价) <生活在自己的世界里,也可以让周围的人显得可笑和渺小。>191[爱在午夜降临前] [8.8] (280567人评价) <所谓爱情,就是话唠一路,都不会心生腻烦,彼此嫌弃。>192[恋恋笔记本] [8.5] (531676人评价) <爱情没有那么多借口,如果不能圆满,只能说明爱的不够。 >193[疯狂的石头] [8.5] (649913人评价) <中国版《两杆大烟枪》。>194[九品芝麻官] [8.6] (482247人评价) <--等待添加-->195[恐怖游轮] [8.5] (641436人评价) <不要企图在重复中寻找已经失去的爱。>196[奇迹男孩] [8.6] (464278人评价) <世界不完美,爱会有奇迹。>197[雨中曲] [9.0] (166956人评价) <骨灰级歌舞片。>198[魔女宅急便] [8.7] (371668人评价) <宫崎骏的电影总让人感觉世界是美好的,阳光明媚的。>199[二十二] [8.7] (237634人评价) <有一些东西不应该被遗忘。>200[海边的曼彻斯特] [8.6] (390996人评价) <我们都有权利不与自己的过去和解。>201[虎口脱险] [8.9] (193241人评价) <永远看不腻的喜剧。>202[人工智能] [8.7] (355441人评价) <对爱的执着,可以超越一切。>203[房间] [8.8] (316957人评价) <被偷走的岁月,被伤害的生命,被禁锢的灵魂,终将被希望和善意救赎。>204[2001太空漫游] [8.8] (236064人评价) <现代科幻电影的开山之作,最伟大导演的最伟大影片。>205[色,戒] [8.5] (564048人评价) <假戏真情,爱欲深海>206[城市之光] [9.3] (107434人评价) <永远的小人物,伟大的卓别林。>207[可可西里] [8.8] (238807人评价) <坚硬的信仰。>208[罗生门] [8.8] (246911人评价) <人生的N种可能性。>209[终结者2:审判日] [8.7] (282101人评价) <少见的超越首部的续集,动作片中的经典。>210[初恋这件小事] [8.4] (832156人评价) <黑小鸭速效美白记。>211[大佛普拉斯] [8.7] (329023人评价) <人们可以登上月球,却永远无法探索人们内心的宇宙。>212[波西米亚狂想曲] [8.7] (465713人评价) <--等待添加-->213[魂断蓝桥] [8.8] (224920人评价) <中国式内在的美国电影。>214[遗愿清单] [8.7] (320543人评价) <用剩余不多的时间,去燃烧整个生命。>215[牯岭街少年杀人事件] [8.9] (209562人评价) <弱者送给弱者的一刀。>216[源代码] [8.5] (669524人评价) <邓肯·琼斯继《月球》之后再度奉献出一部精彩绝伦的科幻佳作。>217[新龙门客栈] [8.6] (356657人评价) <嬉笑怒骂,调风动月。>218[青蛇] [8.6] (414082人评价) <人生如此,浮生如斯。谁人言,花彼岸,此生情长意短。谁都是不懂爱的罢了。>219[无耻混蛋] [8.6] (385423人评价) <昆汀同学越来越变态了,比北野武还杜琪峰。>220[疯狂的麦克斯4:狂暴之路] [8.6] (419422人评价) <“多么美好的一天!”轰轰轰砰咚,啪哒哒哒轰隆隆,磅~>221[燃情岁月] [8.8] (236595人评价) <传奇,不是每个人都可以拥有。>222[海洋] [9.1] (138475人评价) <大海啊,不全是水。>223[血钻] [8.7] (294341人评价) <每个美丽事物背后都是滴血的现实。>224[步履不停] [8.8] (213822人评价) <日本的家庭电影已经是世界巅峰了,步履不停是巅峰中的佳作。>225[穿越时空的少女] [8.6] (321168人评价) <爱上未来的你。 >226[谍影重重2] [8.7] (289091人评价) <谁说王家卫镜头很晃?>227[阿飞正传] [8.5] (401590人评价) <王家卫是一种风格,张国荣是一个代表。>228[彗星来的那一夜] [8.5] (420183人评价) <小成本大魅力。>229[战争之王] [8.7] (286607人评价) <做一颗让别人需要你的棋子。>230[完美陌生人] [8.5] (443154人评价) <来啊,互相伤害啊!>231[地球上的星星] [8.9] (169330人评价) <天使保护事件始末。>232[东京教父] [9.0] (142693人评价) <--等待添加-->233[谍影重重] [8.6] (345491人评价) <哗啦啦啦啦,天在下雨,哗啦啦啦啦,云在哭泣……找自己。>234[香水] [8.5] (457873人评价) <一个单凭体香达到高潮的男人。>235[无间道2] [8.6] (333237人评价) <--等待添加-->236[千钧一发] [8.8] (209623人评价) <一部能引人思考的科幻励志片。>237[东京物语] [9.2] (106083人评价) <东京那么大,如果有一天走失了,恐怕一辈子不能再相见。>238[黑客帝国2:重装上阵] [8.6] (304420人评价) <一个精彩的世界观正在缓缓建立。>239[驴得水] [8.4] (749475人评价) <过去的如果就让它过去了,未来只会越来越糟!>240[朗读者] [8.6] (392896人评价) <当爱情跨越年龄的界限,它似乎能变得更久远一点,成为一种责任,一种水到渠成的相濡以沫。 >241[再次出发之纽约遇见你] [8.6] (343573人评价) <爱我就给我看你的播放列表。>242[崖上的波妞] [8.5] (373620人评价) <--等待添加-->243[我爱你] [9.1] (130218人评价) <你要相信,这世上真的有爱存在,不管在什么年纪 >244[猜火车] [8.5] (359384人评价) <不可猜的青春迷笛。 >245[浪潮] [8.7] (222955人评价) <世界离独裁只有五天。>246[聚焦] [8.8] (230453人评价) <新闻人的理性求真。>247[小萝莉的猴神大叔] [8.4] (403960人评价) <宝莱坞的萝莉与大叔。>248[追随] [8.9] (149161人评价) <诺兰的牛逼来源于内心散发出的恐惧。>249[网络谜踪] [8.6] (429870人评价) <--等待添加-->250[黑鹰坠落] [8.7] (238835人评价) <还原真实而残酷的战争。>

运行环境

Win10 + Python3.6 + Pycharm + Edge

html代码格式化

查看豆瓣电影 Top 250网站,[右键]选择[查看页面源代码]
Python 爬取豆瓣电影Top250_第1张图片

当前网页的源代码如下(头部信息截图):
Python 爬取豆瓣电影Top250_第2张图片

分析得出每部影片的相关数据均在如下标签中(以排名第一的电影肖申克的救赎为例):
Python 爬取豆瓣电影Top250_第3张图片
代码的格式有点乱,有些地方没有对齐,或者缩进不对,不太方便提取相关信息,可以使用ToolFk 在线常用工具箱的在线HTML工具进行格式化,处理完成之后的效果如下:

<div class="item">
    <div class="pic">
        <em class="">1</em>
        <a href="https://movie.douban.com/subject/1292052/">
            <img width="100" alt="肖申克的救赎" src="https://img2.doubanio.com/view/photo/s_ratio_poster/public/p480747492.webp" class="">
        </a>
    </div>
    <div class="info">
        <div class="hd">
            <a href="https://movie.douban.com/subject/1292052/" class="">
                <span class="title">肖申克的救赎</span>
                <span class="title">&nbsp;/&nbsp;The Shawshank Redemption</span>
                <span class="other">&nbsp;/&nbsp;月黑高飞() / 刺激1995()</span>
            </a>


            <span class="playable">[可播放]</span>
        </div>
        <div class="bd">
            <p class="">
                导演: 弗兰克·德拉邦特 Frank Darabont&nbsp;&nbsp;&nbsp;主演: 蒂姆·罗宾斯 Tim Robbins /...<br>
                1994&nbsp;/&nbsp;美国&nbsp;/&nbsp;犯罪 剧情
            </p>


            <div class="star">
                <span class="rating5-t"></span>
                <span class="rating_num" property="v:average">9.7</span>
                <span property="v:best" content="10.0"></span>
                <span>2312095人评价</span>
            </div>

            <p class="quote">
                <span class="inq">希望让人自由。</span>
            </p>
        </div>
    </div>
</div>

完整代码

import requests
from bs4 import BeautifulSoup

def get_film_name(div_class_hd):
    first_span = div_class_hd.find_all('span')[0]
    return first_span.string

def get_film_score_and_estimator_count(div_class_star):
    all_span = div_class_star.find_all('span')
    second_span = all_span[1]
    film_score = second_span.string
    fourth_span = all_span[3]
    film_estimator_count = fourth_span.string
    return film_score, film_estimator_count

def get_film_slogan(p_class_quote):
    # first_span = p_class_quote.find_all('span')[0]
    first_span = p_class_quote.span
    return first_span.string

def get_reponse_bs_data(input_url, input_headers):
    response = requests.get(input_url, headers=input_headers)
    bs = BeautifulSoup(response.text, 'lxml')
    return bs

def print_film_info(bs_data, start_idx):
    for div_class_item in bs_data.find_all('div', attrs={'class': 'item'}):
        # 获取电影名称
        film_name = get_film_name(div_class_item)
        
        # 获取电影评分与评分人数
        div_class_star = div_class_item.find_all('div', attrs={'class': 'star'})[0]
        film_score, film_estimator_count = get_film_score_and_estimator_count(div_class_star)
        
        # 获取电影slogan
        film_slogan = ''
        all_p_class_quote = div_class_item.find_all('p', attrs={'class': 'quote'})
        if len(all_p_class_quote) != 0:
            film_slogan = get_film_slogan(all_p_class_quote[0])
        else:
            film_slogan = '--等待添加--'

        print('第{}名 [{}] [{}分] ({}) <{}>'.format(start_idx, film_name, film_score, film_estimator_count, film_slogan))
        start_idx += 1

if __name__ == '__main__':
    dest_url_template = "https://movie.douban.com/top250?start={}&filter="
    dest_headers = {'User-Agent':
                        'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'}

    for start_idx in range(0, 250, 25):
        dest_url = dest_url_template.format(start_idx)
        bs_data = get_reponse_bs_data(dest_url, dest_headers)
        print_film_info(bs_data, start_idx + 1)

代码分析

相关知识介绍

获取网页的html数据使用requests模块,对返回的html数据进行解析使用BeautifulSoup模块(其中会使用到lxml)。需要安装的模块分别为requests、bs4(注意不是BeautifulSoup)、lxml,安装命令如下:

pip install requests
pip install bs4
pip install lxml

引用模块代码如下:

import requests
from bs4 import BeautifulSoup

文中使用到的requests模块、BeautifulSoup模块的相关知识,这里就不展开介绍了,可以自行搜相关知识。

获取页面的html数据–>get_response_bs_data()

获取页面的hmtl数据,使用模块requests进行处理最为简单,不过使用之前需要使用pip install进行安装,本文中还是用到模块lxml,也需要使用pip install进行安装。

def get_reponse_bs_data(input_url, input_headers):
	# 获取html数据
    response = requests.get(input_url, headers=input_headers)
    # 对html数据进行解析,方便后续处理
    bs = BeautifulSoup(response.text, 'lxml')
    return bs

返回的BeautifulSoup对象bs已经对html数据进行了格式化处理,它的数据类型为,内部是由各种tag数据组成。之后所有的处理都是对bs及其子tag进行处理,tag的数据类型为,其具体的操作,将在下面的代码依次介绍。

取得影片名称–>get_film_name()

由格式化后的html代码可知,影片的名称信息在如下标签中:

<div class="hd">
    <a href="https://movie.douban.com/subject/1292052/" class="">
        <span class="title">肖申克的救赎</span>
        <span class="title">&nbsp;/&nbsp;The Shawshank Redemption</span>
        <span class="other">&nbsp;/&nbsp;月黑高飞() / 刺激1995()</span>
    </a>
    <span class="playable">[可播放]</span>
</div>

取得电影名称的代码如下:

def get_film_name(div_class_hd):
 	# 获取第一个span标签
 	# 这里也可以用div_clas_hd.span,如果有多个span标签,它返回第一个
    first_span = div_class_hd.find_all('span')[0]
    # 返回这个tag的内容信息
    return first_span.string

取得得分和评价人数–>get_film_score_and_estimator_count()

影片得分和评价人数信息在如下标签中:

<div class="star">
    <span class="rating5-t"></span>
    <span class="rating_num" property="v:average">9.7</span>
    <span property="v:best" content="10.0"></span>
    <span>2312095人评价</span>
</div>

取得得分和评价人数代码如下:

def get_film_score_and_estimator_count(div_class_star):
	# 获取所有span标签
    all_span = div_class_star.find_all('span')
    # 取得第一个span标签
    second_span = all_span[1]
    # 获取标签内容
    film_score = second_span.string
    # 获取第三个span标签
    fourth_span = all_span[3]
    # 获取标签内容
    film_estimator_count = fourth_span.string
    return film_score, film_estimator_count

取得电影slogan–>get_film_slogan()

slogan信息在如下标签中:

<p class="quote">
    <span class="inq">希望让人自由。</span>
</p>

取得slogan信息代码如下:

def get_film_slogan(p_class_quote):
	# 获取第一个span标签
    # 也可以使用p_class_quote.find_all('span')[0]
    first_span = p_class_quote.span
    # 返回标签内容
    return first_span.string

打印当前页面影片信息–>print_film_info()

def print_film_info(bs_data, start_idx):
	# 获取所有的属性class值为item的div标签
    for div_class_item in bs_data.find_all('div', attrs={'class': 'item'}):
        # 获取电影名称
        film_name = get_film_name(div_class_item)
        # 获取电影评分与评分人数
        div_class_star = div_class_item.find_all('div', attrs={'class': 'star'})[0]
        film_score, film_estimator_count = get_film_score_and_estimator_count(div_class_star)
        # 获取电影slogan
        film_slogan = ''
        all_p_class_quote = div_class_item.find_all('p', attrs={'class': 'quote'})
        if len(all_p_class_quote) != 0:
            film_slogan = get_film_slogan(all_p_class_quote[0])
        else: # 有些电影没有这个标签,需要特殊处理
            film_slogan = '--等待添加--'

        print('第{}名 [{}] [{}分] ({}) <{}>'.format(start_idx, film_name, film_score, film_estimator_count, film_slogan))
        start_idx += 1

打印所有页面影片信息

界面每页是25个电影信息,总共10页。页面的所有链接地址如下,可以非常容易找到链接地址的变化规律。

https://movie.douban.com/top250?start=0&filter=
https://movie.douban.com/top250?start=25&filter=
...
https://movie.douban.com/top250?start=225&filter=

下面是这个功能的框架代码:

if __name__ == '__main__':
	# 链接地址模板,根据需要填入start参数
    dest_url_template = "https://movie.douban.com/top250?start={}&filter="
    # 头部信息,这里子需要填入User-Agent即可,以防止获取数据时遭到拒接
    dest_headers = {'User-Agent':
                        'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'}

	# 每页25条信息
    for start_idx in range(0, 250, 25):
    	# 拼接链接地址
        dest_url = dest_url_template.format(start_idx)
        # 获取bs信息
        bs_data = get_reponse_bs_data(dest_url, dest_headers)
        # 打印影片信息
        print_film_info(bs_data, start_idx + 1)

你可能感兴趣的:(Python,豆瓣电影Top250,豆瓣电影,Python豆瓣Top250)