IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 【python实战】B站弹幕是如何看待“法外狂徒张三”的?词云分析 -> 正文阅读

[Python知识库]【python实战】B站弹幕是如何看待“法外狂徒张三”的?词云分析

更多文章欢迎订阅上方《从实战学python》专栏

哈喽,大家好,我是一条。

今日逛B站时发现“法外狂徒张三”在B站的热度相当之高,随随便便一个几分钟的视频就有100w+的播放量。

所以一条就来了兴趣,B站人是如何看待“法外狂徒张三”的?

我们爬取弹幕并制作词云分析一下。

获取弹幕

分析url

首先要拿到url,B站搜索张三,我们就用第一个视频:【张三的社会语录】

https://www.bilibili.com/video/av588303995

F12分析一下

点击查看历史弹幕——选择一个日期

可以看到一个seg.so的链接,后面是oid=,如此我们就拿到了该视频弹幕的oid

拼接到弹幕API,得到弹幕的xml地址

https://api.bilibili.com/x/v1/dm/list.so?oid=345114463

发送请求

由于没有登录验证,我们就简单的发送一条get请求,并用xpath解析

import requests
from lxml import etree
def get_text():
    url='https://api.bilibili.com/x/v1/dm/list.so?oid=345114463'
    res=requests.get(url)
    res.encoding='utf-8'
    with open("bilibili.xml", 'wb') as f:
       f.write(res.content)
    html = etree.parse('bilibili.xml',etree.HTMLParser())
    b_list=html.xpath('//d//text()')
    with open("bilibili.txt",'a+',encoding='utf-8') as f:
       for i in b_list:
           f.write(i+'\n')
    print("弹幕获取完成")

文本处理

安装分词库

pip install jieba

jieba分词

jieba分词的作用是将弹幕的长句分成单个的词语,以便进行词云的绘制

在分词前还要去除无效数据,比如标点符号,语气助词……

def get_wc():
    with open("bilibili.txt", "r",encoding='utf-8') as f:
        txt = f.read()
    re_move = [",", "。",'\n','\xa0',' ','的','了','吗','我','你']
    for i in re_move:
        txt = txt.replace(i, " ")
    word = jieba.lcut(txt)  
    with open("bilibili_wc.txt", 'w',encoding='utf-8') as f:
        for i in word:
            f.write(str(i) + ' ')
    print("文本处理完成")

生成词云

安装wordcloud

pip install wordcloud

wordcloud

当我们手中有一篇文档,比如书籍、小说、电影剧本,若想快速了解其主要内容是什么,则可以采用绘制 WordCloud 词云图,显示主要的高频词这种方式,非常方便。

使用wordcloud可以指定使用的字体, 在windows中, 字体在以下的文件夹中: C:\Windows\Fonts, 可以将其中的字体文件拷贝到当前的文件夹内。

本文基于bilibili的logo进行词云绘制

def get_img():
    bg = numpy.array(image.open('b.png'))
    with open("bilibili_wc.txt", "r",encoding='utf-8') as f:
        txt = f.read()
    word = WordCloud(background_color="white", \
                     width=500, \
                     height=500,
                     font_path='simhei.ttf',
                     mask=bg,
                     ).generate(txt)
    word.to_file('test.png')
    print("词云图片已保存")

    plt.imshow(word)  # 使用plt库显示图片
    plt.axis("off")
    plt.show()

成果展示

if __name__ == '__main__':
    get_text()
    get_wc()
    get_img()

需要弹幕数据和源码的同学,点这里


我是一条,一个在互联网摸爬滚打的程序员。

道阻且长,行则将至

大家的 【点赞,收藏,关注】 就是一条创作的最大动力,我们下期见!

注:关于本篇博客有任何问题和建议,欢迎大家留言!

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-07-25 11:36:25  更:2021-07-25 11:36:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/28 7:01:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码