查看原文
其他

豆瓣超高评分《扫黑风暴》热评爬取可视化展示!

印象Python 2022-08-01

The following article is from GOGO数据 Author 是沐沐呀

文 |沐沐

来源:GOGO数据「ID: mu_science」


嗨!朋友,我是沐沐
欢迎你来到学习python的宝藏基地~~

长按下方二维码可以添加我为好友哦






结果展示








    目录详情


    网页分析发送请求
    热评爬取
    数据分析
    可视化展示

    网页分析


    我们打开豆瓣短评,找到我们所要获取电影的短评列表。


    网页F12打开浏览器开发者模式,找到如下

    发送请求的真实链接:

    数据是存储在一个json的数据集合里面的。



    我们使用浏览器插件打开


    我们要获取的图片信息都是在一个叫做html的列表里面。

    老规矩,先获取json数据集。




    发送请求


     url = f'https://movie.douban.com/subject/35202793/comments?percent_type=&start={(page - 1) * 20}&limit=20&status=P&sort=new_score&comments_only=1'
            print(url)

            headers = {
                'Cookie''bid=Hgm5jLcvu9M; dbcl2="153819075:MtvprK7V/38"; ck=8_y9; _pk_ref.100001.4cf6=%5B%22%22%2C%22%22%2C1629936489%2C%22https%3A%2F%2Fopen.weixin.qq.com%2F%22%5D; _pk_ses.100001.4cf6=*; __utma=30149280.232591547.1629936489.1629936489.1629936489.1; __utmb=30149280.0.10.1629936489; __utmc=30149280; __utmz=30149280.1629936489.1.1.utmcsr=open.weixin.qq.com|utmccn=(referral)|utmcmd=referral|utmcct=/; __utma=223695111.1326858547.1629936489.1629936489.1629936489.1; __utmb=223695111.0.10.1629936489; __utmc=223695111; __utmz=223695111.1629936489.1.1.utmcsr=open.weixin.qq.com|utmccn=(referral)|utmcmd=referral|utmcct=/; push_noty_num=0; push_doumail_num=0; _vwo_uuid_v2=D8A1AD86A68FA87DAC0208F74852EA234|8c77aabd1c4b456acb80f56ce1913302; _pk_id.100001.4cf6=18e2fa2e664ebce9.1629936489.1.1629936615.1629936489.',
                f'Referer'f'https://movie.douban.com/subject/35427471/comments?start=20&limit=20&status=P&sort=new_score',
                'User-Agent': str(UserAgent().random)
            }

            resp = requests.get(url, headers=headers)
            if resp.status_code == requests.codes.ok:
                text = resp.json()['html']
                print(text)


    成功获取到浏览器响应之后我们接下来获取每一部电影的

    评分作者、评分时间、评分和评论等


     # 姓名
      cmt_name = div.xpath("./div[@class='comment']/h3/span[@class='comment-info']/a/text()")
      cmt_names = ''.join(cmt_name).strip()

      # 评论时间
      cmt_time = div.xpath("./div[@class='comment']/h3/span[@class='comment-info']/span[@class='comment-time ']/text()")
      cmt_times = ''.join(cmt_time).strip()

      # 星评
      star = div.xpath("./div[@class='comment']/h3/span[@class='comment-info']/span[2]/@title")
      stars = ''.join(star).strip()
      
      # 评分
      score = div.xpath("./div[@class='comment']/h3/span[@class='comment-info']/span[2]/@class")
      scores = ''.join(score).strip(' ')[7:8]

      # 赞同人数
      vote = div.xpath("./div[@class='comment']/h3/span[@class='comment-vote']/span[@class='votes vote-count']/text()")
      votes = ''.join(vote).strip()

      # 评论内容
      comment = div.xpath("./div[@class='comment']/p[@class=' comment-content']/span[@class='short']/text()")
      comments = ''.join(comment).strip()


    数据提取如下:


    春江一壶与君饮 2021-08-09 力荐 6744 5 这瓜保熟吗?我就问你这瓜保熟吗?爱的魔力转圈圈 2021-08-09 力荐 5231 5 那个死亡洒水车放的歌还是祝你平安。。。刘十九 2021-08-09 力荐 3666 5 能压住刘华强的,大概就是李丰田了,这选角绝了。前五集有点意思,剧情张弛有度,喜欢这黑色幽默的调调。Le Papillon 2021-08-10 力荐 4225 5 张艺兴可以啊!进步很大wind又续期 2021-08-10 很差 1918 1 晕了 第一集就看见张艺兴在抠牙,太恶心了,谁办案要抠牙的…🤮挖掘机铲喷子 2021-08-10 还行 9609 3 开头很不错,但是。。。有些地方真的太浮夸了。比如张艺兴的油头,江疏影一个记者居然在警察局那么横,你俩好像和别的演员不是一个次元的凉三 2021-08-09 力荐 2851 5 中央督导组吃的自助餐,感觉很接地气,领导们之间如履薄冰、小心翼翼的试探非常写实。另外,孙红雷、宁理、刘奕君对手戏绝了,很有张力。PS.其实更想看孙红雷演反派tt@DEEP 2021-08-09 推荐 6092 4 刘奕君演警察了哈哈,希望是个聪明的警察,要不然对不起你这些年演过那么多老奸巨猾的反派~kikioh 2021-08-09 推荐 3971 4 编剧是亮剑的作者都梁诶肖申克的舅妈 2021-08-09 推荐 3463 4 因为孙红雷还有宁理来看的,两个实力派演员简直是这种犯罪悬疑片的扛把子。薛梅被撞、马帅在监狱被审问等镜头让我想起西楼尘写的“混凝土里的命如草芥的鱼肉,防火门内是声色犬马的乾坤”。小七 2021-08-12 还行 4656 3 把张艺兴和江疏影的戏份去掉会好很多。这两人太出戏了!LMCRC 2021-08-09 推荐 2331 4 演员阵容非常强大,孙红雷宁理飙戏看的很过瘾,有时候文戏更能体现演员的功底,在牢狱里两人的聊天别有一番深意,既是过命的兄弟又藏着不想让对方知道的秘密,实在让人遐想不止浮影人生 2021-08-09 推荐 1936 4 王志飞老师竟然又演了个反派,太过瘾了。台词干脆利落,得知被查到十四年前的案件,就说了一句“掐掉”,效果足足的,果然是大佬既视感。Gore赞 2021-08-09 力荐 1747 5 奔着题材去看的,是真的没想到,惊喜连连,质感不输电影。而且全员演技在线,李成阳、何勇这两人一个眼神的交流,就擦出了火星子,预测这剧口碑低不了。飞扬跋扈 2021-08-11 还行 2702 3 张艺星刚吃完牛板筋吗 为什么总用手扣牙水浒三国金刚 2021-08-09 推荐 2041 4 剧情上来看,悬疑、犯罪、扫黑,就足以吊起观众的胃口,演员演技也不错,每个角色都是有灵魂的,尤其是宁理饰演的马帅,骨子里是个狠人,自残掰断手指来躲避审问,如果后面剧情不拉垮,是部值得推荐的好剧小熊爱吃曲奇 2021-08-10 很差 1868 1 太悬浮了,国产剧编剧真的不行✋。当红小花胡仙絮 2021-08-10 力荐 1992 5 看了五集忍不住打分,太精彩了,各位看到没有,以后都给我接这种剧本的剧,老戏骨飙戏太精彩了,张艺兴这次演的不错,真敢拍啊,太敢拍了屠龙胭脂 2021-08-13 还行 1297 3 张艺兴和江疏影仿佛跟其他的演员不在一部剧里山楂拿铁 2021-08-15 推荐 807 4 有两个人很拉胯,是谁我不说





    多页爬取


    多页数据分析的时候最简单的方法就是观察并分析多页连接的区别,如下:


    https://movie.douban.com/subject/35202793/comments?percent_type=&start=20&limit=20&status=P&sort=new_score&comments_only=1&ck=8_y9https://movie.douban.com/subject/35202793/comments?percent_type=&start=40&limit=20&status=P&sort=new_score&comments_only=1&ck=8_y9https://movie.douban.com/subject/35202793/comments?percent_type=&start=60&limit=20&status=P&sort=new_score&comments_only=1&ck=8_y9

    观察此链接除了start参数之外都没有变化,其实这个start参数就是控制翻页的。

    它的变化规律就是(page-1)*20,据此我们可以构造出它的请求链接


    url = f'https://movie.douban.com/subject/35202793/comments?percent_type=&start={(page - 1) * 20}&limit=20&status=P&sort=new_score&comments_only=1'


    接下来我们就可以获取多页数据啦

        for page in range(125 + 1):
            print(f'-----------------正在抓取第{page}页影评-----------------')
            url = f'https://movie.douban.com/subject/35202793/comments?percent_type=&start={(page - 1) * 20}&limit=20&status=P&sort=new_score&comments_only=1'
           .....






    数据存储



    我们将获取到的数据存储到本地的excel之中,之前我有专门拉出来详细讲过,有兴趣的小伙伴可以参考


    我是如何把python爬虫获取到的数据写入Excel的?



    我们这里使用的是第一种,使用openpyxl来保存数据


        # 创建workbook
        ws = op.Workbook()
        # 创建worksheet
        wb = ws.create_sheet(index=0)

        # 创建表头
        wb.cell(row=1, column=1, value='作者')
        wb.cell(row=1, column=2, value='时间')
        wb.cell(row=1, column=3, value='星评')
        wb.cell(row=1, column=4, value='评分')
        wb.cell(row=1, column=5, value='赞同')
        wb.cell(row=1, column=6, value='评论')
        count = 2
        wb.cell(row=count, column=1, value=cmt_names)
        wb.cell(row=count, column=2, value=cmt_times)
        wb.cell(row=count, column=3, value=stars)
        wb.cell(row=count, column=4, value=scores)
        wb.cell(row=count, column=5, value=votes)
        wb.cell(row=count, column=6, value=comments)

        count += 1

        print(cmt_names, cmt_times, stars, votes, scores, comments)
        ws.save('扫黑风暴.xlsx')







    词云展示



    为了更加直观的展示电影所述,我一般都是使用词云来做直观的展示。
    我们使用的是stylecloud
    使用pandas来读取我们刚才保存的数据。使用jieba来切割分词使用stopwords来设置停用词
    有兴趣的小伙伴详情可以参考如何使用python实现一个优雅的词云?(超详细)

      rcv_data = pd.read_excel('你好,火焰蓝短评.xlsx')
      c_title = rcv_data['评论'].tolist()
      #观影评论词云图
      wordlist = jieba.cut(''.join(c_title))
      result = ' '.join(wordlist)
      pic = 'img1.jpg'
      gen_stylecloud(text=result,
                      icon_name="fab fa-apple",
                      font_path='msyh.ttc',
                      background_color="white",
                      output_name=pic,
                      custom_stopwords= ['了''的''是''也']
                       )
      print('绘图成功!')


    最终效果展示如下:







    评分可视化分析



    首先我们使用pandas读取数据统计各评分出现频次

        # 读取数据
        pd_data = pd.read_excel('./扫黑风暴.xlsx')
        score = pd_data['评分'].value_counts()
        
        '''
        ['4', '5', '3', '2', '1', '-']
        [143, 104, 103, 76, 64, 10]
        '''

    然后使用图形可视化数据



    从图中可以看出,大家对这部剧的认可之还是相当高的没有看过的小伙伴还是值得去刷一刷的




    点赞最多评论


    我们来看一看点赞最多的评论到底说了什么?    # 读取数据
        pd_data = pd.read_excel('./扫黑风暴.xlsx')
        pd.set_option('display.max_columns'None)  # 显示完整的列
        pd.set_option('display.max_rows'None)  # 显示完整的行
        pd.set_option('display.expand_frame_repr'False)  # 设置不折叠数据

        # 最多播放
        max_score = pd_data[pd_data['赞同'] == pd_data['赞同'].max()]
        print(max_score)


    我就不在此做其他项的可视化分析了,反正数据已经给你们了对吧!




    总结



    至此,《扫黑风暴》的豆瓣短评分析可视化就完成啦~~~


    从分析可以看出,电视剧的整体口碑还是很不错的,

    最难得在于除了好看之外,它还让观众深吸一口凉气。剧情中展现的案件,是经过中央政法委筛选而出的。


    曾经的“操场埋尸案”和“孙小果案”都曾经引起整个社会的热议,

    剧集不仅将这两个案件融入其中,还融入了“网贷陷阱”等一系列社会问题,尺度之大,在近年国产剧中堪称罕见。


    而剖开细节,深入好看和大尺度背后,还有一层信仰,才真正卷起观众心里的风暴。


    为中国反贪扫黑点赞!!!



    有问题的小伙伴们欢迎下方留言讨论哈~



    1. 本文详细介绍了python爬虫获取豆瓣影评并保存excel进行可视化分析。


    有兴趣的读者可以尝试自己动手练习一下。


    2. 本文仅供读者学习使用,不做其他用途!


    3. 右下角点亮[在看]

    即可找我领取本文的全部代码呦

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存