社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python爬取15万条《我是余欢水》弹幕,还原一个丧到极致的中年人生

CDA数据分析师 • 5 年前 • 643 次点击  




 CDA数据分析师 出品  

作者:Mika

数据:真达  

后期:泽龙 

【导语】:今天我们聊聊热干面,Python技术部分可以直接看第四部分。公众号后台,回复关键字“余欢水”获取完整数据。

Show me data,用数据说话

今天我们聊聊 《我是余欢水》

点击下方视频,先睹为快:


他来了他来了,正午阳光带着新剧走来了。

 

年初时我们用数据解读了几部热度高,但评分差强人意的国产剧,而最近正午阳光带着两部新剧来了,《我是余欢水》和《清平乐》,截止到目前为止,这两部剧在豆瓣分别为7.5分和7.9分,算是非常高的评分了。

 

今天我们就来跟大家聊一聊其中这部《我是余欢水》。

 


01


这些年 我们追过的

正午阳光作品

 

都说作为“国剧门脸”,正午阳光出品,必属精品,每一部都让人看得废寝忘食。


我们先看到近年来正午阳光出品的作品,举几个例子你就知道了:

 

2019年 都挺好 7.8分

2018年 大江大河 8.8分

2016年 鬼吹灯之精绝古城 8.0分

2016年 欢乐颂 7.4分

2015年 琅琊榜 9.3分

2015年 伪装者 8.5分

 


这些耳熟能详的热门剧集,分数都在7.5分以上,无论是剧情、演技、服化道都十分讲究,真的算得上是国产剧中的良心制作了。

 


02



《我是余欢水》

史上最惨男主的逆袭之路

 

这次《我是余欢水》讲的是个什么故事呢?

 

《余欢水》根据小说《如果没有明天》改编,由《都挺好》编剧王三毛、王磊父子改编。由郭京飞、苗苗、高露、岳旸等主演。

 

余欢水(郭京飞饰)是公司里业绩最差的员工,退让隐忍、得过且过是他的生存法则,直到嫌他窝囊的妻子提出离婚,余欢水仍未做出改变。某日借酒浇愁后,余欢水身体不适查出癌症,万念俱灰的他破罐子破摔,性情大变,还在阴差阳错之下,成了见义勇为的英雄,到达人生巅峰。但阴差阳错的命运仍在继续,危机和挑战接踵而至。


这部剧在播出后备受好评,首先一改普通国产剧动辄五六十集的巨幅,这部余欢水仅仅12集,短小精悍,利落明快。加上主角们的演技都在线,剧情紧凑不拖沓,故事情节环环相扣,让人看得酣畅淋漓,十分过瘾。

 


03



 《我是余欢水》

大家都在怎么看?

 


豆瓣评分:

目前在豆瓣上,《我是余欢水》为7.5分。共有11万的人给出了评分,其中百分之30.8%给出了5星,40%的给出了4星,是非常不错的成绩。

 


知乎问答


我们分析整理了知乎上关于《我是余欢水》的问答,可以看到:

 

我们把回答的角度主要分为故事、角色和剧作三个角度。


 

关于剧作

讨论的角度主要是“网络短剧”的新形式十分有新鲜感,“结构紧凑”。同时还是那熟悉的“正午配方”,许多正午阳光其他剧的演员出现,总让有种“熟脸连连看的”的感觉,很是有趣。

 

关于故事

很多人表示,《我是余欢水》显然讲的是“一个社畜的故事”,余欢水在职场的力不从心与无奈让人同情。剧中把余欢水遭遇车祸、离婚、误诊的窝囊人生悲剧用“喜剧效果”来展现。

 

关于角色

男主余欢水、他的老婆甘虹、以及办公室三人组赵觉民、魏总等人都是讨论的焦点。

 


04



Python分析15万弹幕 

看看大家都在说些什么

 

那么观众们对《余欢水》和剧中主要人物都是怎么看的呢?

 

我们爬取了在腾讯视频上本剧的弹幕,共计150252 条弹幕,每集平均就有 12521 条。

 

先看到主要结论:



大家有多爱发弹幕

再细看到每人弹幕发送的数量:

根据数据,在发送弹幕的人群中,63.7%的人发了一条弹幕,16.9%发了两条,少数比较话痨的人发了10条以上的弹幕,占比3.63%。



哪些弹幕点赞最多?


点赞最高的弹幕也特别有意思,比如:


余欢水——国家一级退堂鼓表演艺术家

记住!这是一瓶改变命运的假酒

你摔倒了,我们很同情马路

对不起,但是真的好想笑


真是让人感叹,这届网友实在是太有才了。余欢水都这么惨了,你们还嘲笑他,真是太坏了。

 


弹幕里大家都在讨论谁?


根据分析我们可以看到,讨论最多的当然是我们的男主了,有3974条弹幕都是关于余欢水的。


讨论最多的第二名是谁?你们绝对想不到,居然是公司三人组,余欢水的上司之一梁安妮,收获了2158条弹幕。比余欢水老婆甘虹的弹幕高出近一倍。

 


人物弹幕画像:

 

我们再根据主要人物的弹幕,整理出各个人物的画像,首先是余欢水,大家提到最多的就是演员郭京飞的演技,吊打一众小鲜肉,妥妥的用实力说话。

 

余欢水


余欢水也被观众戏称为“好惨一男的”,各种“窝囊”、“怂”、“惨”“令人心疼”,从中也看到了人到中年的无奈与现实。除此之外大家也疯狂串戏到了《都挺好》里的“苏明成”,感觉男主这么惨,看来编剧是想让余欢水给苏明成还债呀。

 

甘虹


我们再看到余欢水老婆甘虹的画像,大家提到最多的关键词是“大嫂”,要知道在都挺好里,高露演的是郭京飞的大嫂,这一转眼两人从叔嫂演成了夫妻。


梁安妮

看到收获弹幕第二高的角色——梁安妮。观众们都沉迷于她的演技,“性感”、“撩人”“好看”等都是关键词。认为这个角色是妥妥的魅力担当,演员高叶把这个人物的气质拿捏的死死的,果然漂亮小姐姐大家都喜欢。


 赵觉民


再聊聊正午的金牌配角岳旸。听名字可能不太熟悉,但看脸就知道了,正午的剧里哪哪都有他。《我是余欢水》里,他演的是的领导赵觉明。他在《鬼吹灯之精绝古城》里演的是“大金牙”;到了《欢乐颂》,他演的是樊胜美的哥哥"樊胜英"。在弹幕里这两个角色名也常常被大家提到。



下面看到具体分析过程


此次分析我们获取腾讯视频的弹幕并进行数据数据,数据获取部分的具体思路如下:


  1. 分析网站URL规律,获取弹幕数据URL请求接口和请求方式
  2. 分析弹幕URL规律分析,获取翻页规律


数据获取

分析网站和数据定位



打开腾讯视频《我是余欢水》视频随便选取一集,观察我们需要抓取的弹幕,可以明显看出来弹幕不是在视频上的而是浮动在视频上面,而且弹幕在视频播放之后才滚动加载,所以我们大概能得出弹幕是JS异步加载的。


我们使用谷歌浏览器,右键审查元素,观察Network的请求,播放开始后出现了大量请求,我们在js选项下发现了一个比较特殊的请求 "danmu" ,打开这个请求后发现这就是我们要的弹幕数据。



切换到Headers下获取到弹幕数据的URL地址:

https://mfm.video.qq.com/danmu?otype=json&callback=jQuery19106242753790025646_1587109875909&target_id=5035751775%26vid%3Dy0033grdnk8&session_key=93970%2C2557%2C1587109877&timestamp=195&_=1587109875933


弹幕URL规律分析

首先,我们尝试删掉目标网址中不影响最终结果的部分参数,从而精简出网址如下:

https://mfm.video.qq.com/danmu?target_id=5035751775&vid=y0033grdnk8&timestamp=15


将第二,三个请求拿出来精简:

https://mfm.video.qq.com/danmu?target_id=5035751775&vid=y0033grdnk8&timestamp=45

https://mfm.video.qq.com/danmu?target_id=5035751775&vid=y0033grdnk8&timestamp=75


对比很容易找到规律,从第一页到第二页,timestamp值从15变到了45,第二页到第三页从45到75,target_id不变。


这个规律我们可以大胆猜测这个 timestamp 值是控制页数的,并且起始值是15每30秒更新一次。


一集视频弹幕有多少页呢?如何获取最后一个timestamp的值。


有一个小技巧,我们在构建URL地址的时候指定一个足够大的结尾步长,然后当获取不到内容时终止循环即可。


不同集之前我们需要寻找target_id的代码规律,此处暂不做赘述。


具体代码如下:


# 导入所需库
import requests
import json
import time
import parsel
import pandas as pd

def get_danmu_one_page(url_dm):
    """
    :param url_dm: 视频弹幕URL地址
    :return: 一页的弹幕数据
    """

    # 添加headers
    headers = {
        'user-agent''Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36',
        'cookie''你的电脑登录后的cookie信息',
        'referer''https://v.qq.com/x/cover/mzc00200bll9mha.html',
    }

    # 发起请求
    try:
        r = requests.get(url_dm, headers=headers, timeout=3)
    except Exception as e:
        time.sleep(3)
        r = requests.get(url_dm, headers=headers, timeout=3)

    # 解析网页
    data = r.json()['comments']

    # 获取评论ID
    comment_id = [i['commentid'for i in data]
    # 获取用户名
    oper_name = [i['opername'for i in data]
    # 获取会员等级
    vip_degree = [i['uservip_degree'for i in data]
    # 获取评论内容
    content = [i['content'for i in data]
    # 获取评论时间点
    time_point = [i['timepoint'for  i in data]
    # 获取评论点赞
    up_count = [i['upcount'for i in data]

    # 存储数据
    df_one = pd.DataFrame({
        'comment_id': comment_id,
        'oper_name': oper_name,
        'vip_degree': vip_degree,
        'content': content,
        'time_point': time_point,
        'up_count': up_count
    })
    return df_one


def get_danmu_all_page(target_id, vid):
    """
    :param target_id: target_id
    :param vid: vid
    :return: 所有页弹幕
    """

    df_all = pd.DataFrame()
    # 记录步数
    step = 1
    for time_stamp in range(1510000030):  # 右侧设置一个足够大的数
        try:  # 异常处理
            # 构建URL
            url_dm = 'https://mfm.video.qq.com/danmu?target_id={}&vid={}&timestamp={}'.format(target_id, vid, time_stamp)
            # 调用函数
            df = get_danmu_one_page(url_dm)
            # 终止条件
            if df.shape[0] == 0:
                break
            else:
                df_all = df_all.append(df, ignore_index=True)
                # 打印进度
                print('我正在获取第{}页的信息'.format(step))
                step += 1
                # 休眠一秒
                time.sleep(1)
        except Exception as e:
            continue

    return df_all


获取到的数据如下所示,共计爬取了 150252 条弹幕(每集平均12521条,每30s的间隔爬取),来看看弹幕下的余欢水。


主要包含了以下信息:集数、评论ID、用户名、vip等级、评论内容、评论时间点和评论点赞。



关注CDA数据分析师公众号
回复关键字“ 余欢水” 
获取详细数据代码

CDA数据分析师 


本文出品:CDA数据分析师(ID: cdacdacda)


📚推荐阅读 READ MORE

(点击下方图片阅读)

全网谁家热干面销量最高?教你用Python轻松获取

为湖北带货,1.2亿人围观!朱广权是怎么凭借播新闻出圈的?

 

📌CDA课程咨询


喜欢本篇内容请点个“在看”哦!❤️

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/62010
 
643 次点击