数据分析展示B站UP主假吃强(Cram阿强)的面目-评论篇

一、前言

近日,B站UP主cram阿强(假吃强)的假吃、网暴路人,教唆孝子骂人、撒谎欺骗观众的事件持续发酵.小学弟也被它的操作恶心了很久.作为代码的搬运工,自然不能通过口吐芬芳来发泄,遂现准备通过Python对假吃强的视频评论进行爬取与数据分析,看看再大众眼中对它有怎样的评价.




还能说什么好呢? 只能说希望阿强你****

二、思路

通过查询资料得知,B站的视频评论以JSON格式保存,那么首先需要爬取评论,保存到本地,然后处理JSON数据,最后对评论信息进行词性分析处理,生成可视化数据.

三、流程

环境

  • IDE : Pycharm
  • 接口工具 : Postman

前期准备

准备爬取的视频为:

这是假吃强最有代表性的一个视频,共105469条评论

为了爬取一个视频的评论,需要以下参数

  • pn : 即page number评论的页码
  • oid : 视频的oid编码

在视频播放页面按F12,进入控制台,选择网络,选择以下文件

可以看到一个URL地址,这就是获取视频评论的接口,但不能直接使用,因为其中一些参数是不必要的.
从URL中可得本视频的oid=583574337,若想获取第一页信息,则令pn=1,修改接口的URL为:

https://api.bilibili.com/x/v2/reply?=&=&pn=1&type=1&oid=583574337&sort=2&_=1595903965207

利用Postman测试

可以看到是没问题的.顺便说一句,假吃强的删评能力确实出众

1.1 爬取单页评论

既然已经知道了接口地址,oid=583574337,则只需要遍历所有页码,改变pn参数的值,最终就可以获取所有评论

代码

# 获取指定视频指定页码的所有评论
def get_comment(oid,pn):
    url = 'https://api.bilibili.com/x/v2/reply?=&=&pn=%s&type=1&oid=%s&sort=2' % (pn, oid)
    res = requests.get(url,'utf-8')
    # 将获取的数据转换为dict格式
    data = res.json()
    file_name = '%s-%s.json' % (oid, pn)
    # JSON文件格式为uttf-8
    with open(file_name, "w",encoding='utf-8') as fp:
        # 以JSON格式保存文件,indent决定JSON缩进,ensure_ascii确保汉字不被转换为编码
        fp.write(json.dumps(data, indent=4,ensure_ascii=False))

if __name__ == '__main__':
    get_comment('1', '583574337')

运行结果

可以看到已经将假吃强该视频第一页的评论爬取并保存到了本地的JSON文件中

1.3 过滤数据

上面得到的JSON文件中包含很多无用信息,接下来需将评论提取出并保存至.txt文件中

def filter_data(file):
    # 读取json文件内容,返回字典格式
    with open(file, 'r', encoding='utf8') as fp:
        data = json.load(fp)
    comment_list = data["data"]["replies"]
    for i in comment_list:
        # 获取评论列表中首条评论
        first_comment = i["content"]["message"]
        # 去除空格和换行符
        first_comment = first_comment.replace('\n', '').replace('\r', '')
        print(first_comment)

可以看到,当前代码只能获取首条评论,而无法获取回复的评论,因此修改为:

def filter_data(file):
    # 读取json文件内容,返回字典格式
    with open(file + '.json', 'r', encoding='utf8') as fp:
        data = json.load(fp)
        data = data["data"]
    fp.close()
    comment_list = data["replies"]

    with open(file + '.txt', 'w', encoding='utf-8') as f:
        for i in comment_list:
            # 获取评论列表中首条评论
            first_comment = i["
  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值