Python:获取豆瓣电影TOP250列表

完成这些操作主要用到了 BeautifulSoup 和 requests 这两个库,使用之前要提前安装好相应的库。

参考:
Quickstart — Requests 2.18.3 documentation
Beautiful Soup 4.4.0 文档 — beautifulsoup 4.4.0 文档

代码如下:

#!/usr/bin/python3
# -*- coding:utf-8 -*-

from bs4 import BeautifulSoup
import requests,re

#列表第一页的开始地址
ROOT_URL = 'https://movie.douban.com/top250'

def download_html(url):
    # 伪装成浏览器
    headers = {'User-Agent':'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0'}
    return requests.get(url,headers=headers).content

def parse_html(html):
    soup = BeautifulSoup(html,'lxml') #创建 BeautifulSoup 对象
    movie_list = soup.find('ol',attrs={'class':'grid_view'}) # 定位到每一页的电影列表
    
    result = []

    for val in movie_list.find_all('li'):
        rank = val.find('em').getText() #每部电影的排名
        rating = val.find('span',attrs={'class':'rating_num'}).getText() #评分
        #电影介绍,有几部电影是没有简介的(例如《小森林 夏秋篇》),这需要注意
        description = val.find('p',attrs={'class':'quote'}) 

        if description:
            description = description.find('span').getText()

        info = val.find('a') # 提供给以下三行用
        url = info['href'] # 电影在豆瓣上的链接
        name = info.find('img')['alt'] #电影名
        cover = info.find('img')['src'] #电影的封面图片地址

        add = {}
        add['rank'] = rank
        add['rating'] = rating
        add['name'] = name
        add['cover'] = cover
        add['url'] = url
        if description:
            add['description'] = description
        result.append(add)

    return result


if __name__ == '__main__':

    result = []
    with open('result.md','w') as file: #用 markdown 形式保存最终结果
        for start in range(0,250,25):
            #网址有https://movie.douban.com/top250?start=n&filter= 的规律
            # n 从 0 到 225,每次递增 25
            url = ROOT_URL + "?start=" + str(start) 
            # 输出地址,好知道到了那一页
            print(url)

            html_data = download_html(url)  
    
            for val in parse_html(html_data):
                # 接下来一行是显示电影封面图片,显示效果不好暂时注释掉
                #file.write('![](' + val['cover'] + ')\n')
                file.write(val['rank']+'. [**'+val['name']+'**]('+val['url']+') ( '+val['rating']+' )\n')
                if 'description' in val:
file.write(val['description']+'\n')

最终结果(信息量有点大,暂时只贴上前 20 个结果)

  1. 肖申克的救赎 ( 9.6 )
    希望让人自由。
  2. 霸王别姬 ( 9.5 )
    风华绝代。
  3. 这个杀手不太冷 ( 9.4 )
    怪蜀黍和小萝莉不得不说的故事。
  4. 阿甘正传 ( 9.4 )
    一部美国近现代史。
  5. 美丽人生 ( 9.5 )
    最美的谎言。
  6. 千与千寻 ( 9.2 )
    最好的宫崎骏,最好的久石让。
  7. 辛德勒的名单 ( 9.4 )
    拯救一个人,就是拯救整个世界。
  8. 泰坦尼克号 ( 9.2 )
    失去的才是永恒的。
  9. 盗梦空间 ( 9.2 )
    诺兰给了我们一场无法盗取的梦。
  10. 机器人总动员 ( 9.3 )
    小瓦力,大人生。
  11. 海上钢琴师 ( 9.2 )
    每个人都要走一条自己坚定了的路,就算是粉身碎骨。
  12. 三傻大闹宝莱坞 ( 9.1 )
    英俊版憨豆,高情商版谢耳朵。
  13. 忠犬八公的故事 ( 9.2 )
    永远都不能忘记你所爱的人。
  14. 放牛班的春天 ( 9.2 )
    天籁一般的童声,是最接近上帝的存在。
  15. 大话西游之大圣娶亲 ( 9.2 )
    一生所爱。
  16. 教父 ( 9.2 )
    千万不要记恨你的对手,这样会让你失去理智。
  17. 龙猫 ( 9.1 )
    人人心中都有个龙猫,童年就永远不会消失。
  18. 楚门的世界 ( 9.0 )
    如果再也不能见到你,祝你早安,午安,晚安。
  19. 乱世佳人 ( 9.2 )
    Tomorrow is another day.
  20. 天堂电影院 ( 9.1 )
    那些吻戏,那些青春,都在影院的黑暗里被泪水冲刷得无比清晰。

最后我个人不是很想把它称为爬虫,在我看来这更多的是一种批量话的自动操作,能免去很多麻烦,所以没有在标题中提及爬虫这个词。

欢迎评论或者点击喜欢~

来自个人 Python 文集

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,099评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,473评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,229评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,570评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,427评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,335评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,737评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,392评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,693评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,730评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,512评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,349评论 3 314
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,750评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,017评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,290评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,706评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,904评论 2 335

推荐阅读更多精彩内容