制作哔哩哔哩弹幕词云

先展示一下实物图吧

词云制作
S8英雄联盟全球总决赛
不知道有没有人能猜出来这是哪个视频的弹幕

直接上代码

先是爬取视频弹幕

import re
import requests
def main():print("输入想爬取的b站视频网址:")url = input()res = requests.get(url)cid = re.findall(r'"cid":(.*?),', res.text)[0]#其中cid是弹幕对应的iddmurl = f'https://comment.bilibili.com/{cid}.xml'datalist = get_Html(dmurl)list=datalist.content.decode("utf-8")savelist(list)
def get_Html(url):headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36'}         #请输入你个人的User-Agentresponse = requests.get(url, headers=headers)return response
def savelist(list):danmu = re.compile(r'<d p=".*?">(.*?)</d>')File = open("弹幕.txt", "w", encoding="utf-8")data = re.findall(danmu,list)for i in data:File.writelines(i)File.writelines("\n")File.close()
if __name__ =="__main__":main()print("爬取完毕")

然后是制作词云代码

可能出现的报错:
缺少stoplist.txt文件,自行创建即可。作用是制作词的云排除你不想要的词,一个词占一行

如果你想制作一个特定图案的词云,就可以将第六步中的两行代码的注释求掉,并添加你的图片文件,最好是颜色相差较大的图片,不然制作出来的词云效果不好,如果效果不好的话可以用PS把图片背景去掉,留下你想要的图案

# 1 导入相关库
import pandas as pd
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
from imageio import imreadimport warnings
warnings.filterwarnings("ignore")# 2 读取文本文件,并使用lcut()方法进行分词
with open("弹幕.txt",encoding="utf-8") as f:txt = f.read()
txt = txt.split()
txt = [i.upper() for i in txt]
data_cut = [jieba.lcut(x) for x in txt]# 3 读取停用词
with open("stoplist.txt",encoding="utf-8") as f:stop = f.read()
stop = stop.split()
stop = [" "] + stop# 4 去掉停用词之后的最终词
s_data_cut = pd.Series(data_cut)
all_words_after = s_data_cut.apply(lambda x:[i for i in x if i not in stop])# 5 词频统计
all_words = []
for i in all_words_after:all_words.extend(i)
word_count = pd.Series(all_words).value_counts()# 6 词云图的绘制
# 1)读取背景图片
# back_picture = imread("1.jpg")# 2)设置词云参数
wc = WordCloud(font_path="simhei.ttf",background_color="white",max_words=1000,#    mask=back_picture,max_font_size=150,random_state=42)
wc2 = wc.fit_words(word_count)# 3)绘制词云图
plt.figure(figsize=(16,8))
plt.imshow(wc2)
plt.axis("off")
plt.show()
wc.to_file("ciyun.png")

之后就要制作ui界面了

可以跟着这个视频学习一下点我
我这个只是一个示例,以作参考,如果需要做出一个界面的话还是得自己学习一下
文件类型为 .ui

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0"><class>Form</class><widget class="QWidget" name="Form"><property name="geometry"><rect><x>0</x><y>0</y><width>645</width><height>496</height></rect></property><property name="minimumSize"><size><width>0</width><height>0</height></size></property><property name="windowTitle"><string>弹幕词云</string></property><property name="styleSheet"><string notr="true">QPushButton:hover{font-family:微软雅黑;font-size:15px;color:#1d649c;
}
*{background-image:url(bi.jpg);
}</string></property><layout class="QVBoxLayout" name="verticalLayout" stretch="0,0,0,0,0"><item><spacer name="verticalSpacer"><property name="orientation"><enum>Qt::Vertical</enum></property><property name="sizeType"><enum>QSizePolicy::Expanding</enum></property><property name="sizeHint" stdset="0"><size><width>20</width><height>150</height></size></property></spacer></item><item><layout class="QHBoxLayout" name="horizontalLayout_2" stretch="1,0,20"><item><spacer name="horizontalSpacer"><property name="orientation"><enum>Qt::Horizontal</enum></property><property name="sizeHint" stdset="0"><size><width>40</width><height>20</height></size></property></spacer></item><item><widget class="QTextEdit" name="textEdit"><property name="minimumSize"><size><width>280</width><height>10</height></size></property><property name="maximumSize"><size><width>16777215</width><height>30</height></size></property><property name="placeholderText"><string>请输入b站视频网址:</string></property></widget></item><item><spacer name="horizontalSpacer_2"><property name="orientation"><enum>Qt::Horizontal</enum></property><property name="sizeHint" stdset="0"><size><width>40</width><height>20</height></size></property></spacer></item></layout></item><item><spacer name="verticalSpacer_2"><property name="orientation"><enum>Qt::Vertical</enum></property><property name="sizeType"><enum>QSizePolicy::Expanding</enum></property><property name="sizeHint" stdset="0"><size><width>20</width><height>89</height></size></property></spacer></item><item><layout class="QHBoxLayout" name="horizontalLayout" stretch="2,1,7"><item><spacer name="horizontalSpacer_4"><property name="orientation"><enum>Qt::Horizontal</enum></property><property name="sizeHint" stdset="0"><size><width>40</width><height>20</height></size></property></spacer></item><item><widget class="QPushButton" name="pushButton"><property name="sizePolicy"><sizepolicy hsizetype="Maximum" vsizetype="Fixed"><horstretch>0</horstretch><verstretch>0</verstretch></sizepolicy></property><property name="layoutDirection"><enum>Qt::LeftToRight</enum></property><property name="text"><string>制作词云</string></property></widget></item><item><spacer name="horizontalSpacer_3"><property name="orientation"><enum>Qt::Horizontal</enum></property><property name="sizeHint" stdset="0"><size><width>40</width><height>20</height></size></property></spacer></item></layout></item><item><spacer name="verticalSpacer_3"><property name="orientation"><enum>Qt::Vertical</enum></property><property name="sizeType"><enum>QSizePolicy::Expanding</enum></property><property name="sizeHint" stdset="0"><size><width>20</width><height>89</height></size></property></spacer></item></layout></widget><resources/><connections/>
</ui>

最后是汇总的代码

这里如果你直接复制粘贴的话必出错,就算你用了我上面的 .ui文件。因为我在 .ui文件里还设置了背景图片,所以这段代码也是用于参考。

汇总的原因是方便打包文件,制作成 .exe文件,可以发送给别人运行,即使电脑上没有python环境。可以根据这篇文章制作 .exe点我

from PySide2.QtWidgets import QApplication,QMessageBox
from PySide2.QtUiTools import QUiLoader
from PySide2.QtGui import QIcon
import re
import requests
import pandas as pd
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
from imageio import imread
import warnings
warnings.filterwarnings("ignore")class Stats:def __init__(self):self.ui = QUiLoader().load('bilibili.ui')self.ui.pushButton.clicked.connect(self.handleCalc)def handleCalc(self):url = self.ui.textEdit.toPlainText()res = requests.get(url)cid = re.findall(r'"cid":(.*?),', res.text)[0]     #其中cid是弹幕对应的iddmurl = f'https://comment.bilibili.com/{cid}.xml'datalist = self.get_Html(dmurl)list=datalist.content.decode("utf-8")self.savelist(list)self.ciyun()def get_Html(self,url):        headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36'}         #请输入你个人的User-Agentresponse = requests.get(url, headers=headers)return responsedef savelist(self,list):danmu = re.compile(r'<d p=".*?">(.*?)</d>')File = open("弹幕.txt", "w", encoding="utf-8")data = re.findall(danmu,list)for i in data:File.writelines(i)File.writelines("\n")File.close()def ciyun(self):with open("弹幕.txt",encoding="utf-8") as f:txt = f.read()txt = txt.split()txt = [i.upper() for i in txt]data_cut = [jieba.lcut(x) for x in txt]with open("stoplist.txt",encoding="utf-8") as f:stop = f.read()stop = stop.split()stop = [" "] + stops_data_cut = pd.Series(data_cut)all_words_after = s_data_cut.apply(lambda x:[i for i in x if i not in stop])all_words = []for i in all_words_after:all_words.extend(i)word_count = pd.Series(all_words).value_counts()# 1)读取背景图片# back_picture = imread("EDG.jpg")# 2)设置词云参数wc = WordCloud(font_path="simhei.ttf",background_color="white",max_words=1000,#    mask=back_picture,max_font_size=150,random_state=42)wc2 = wc.fit_words(word_count)# 3)绘制词云图plt.figure(figsize=(16,8))plt.imshow(wc2)plt.axis("on")plt.show()wc.to_file("ciyun.png")app=QApplication([])
app.setWindowIcon(QIcon('li.jpg'))
stats=Stats()
stats.ui.show()
app.exec_()

文章到这里就结束了,后面是一些废话

之前因为个人习惯原因丢失的代码现在基本上补回来了(能想起来的),之后如果能想起来还有哪些代码的话随缘补上吧,这次其实不是很想补,得花几天的时间,但想着顺便复习一下Qt designer的用法,就补了这次代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/67759.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

bilibili获取cookie

bilibili获取cookie 先去登录自己的哔哩哔哩 (゜-゜)つロ 干杯~-bilibili账号 然后进入个人中心 然后按F12打开https://api.bilibili.com/x/web-interface/nav 没找到可以刷新一下页面 获取到cookie填写到环境变量即可 export Ray_BiliBiliCookies__0“”; 本文转载自哔哩…

【爬虫工具】哔哩哔哩插件姬(bilibili-plugin)

完整原文&#xff08;含源码&#xff09;&#xff1a;Github &#xff08;转载请注明出处&#xff0c;仅供分享学习&#xff0c;严禁用于商业用途&#xff09; 声明 写这个插件纯粹是出于学习目的&#xff0c;此博文主要作用是功能展示之后会围绕这个插件&#xff0c;写一个系…

Python爬虫实战之哔哩哔哩二维码登录申请

前言 哈喽&#xff0c;好久不见了吧&#xff0c;各位新年好&#xff01;博主春节也是比较忙的&#xff0c;没时间去写文章和"coding"。最近我们学校也是初九就开学了&#xff0c;所以更加没时间创作了&#x1f923; 言归正传&#xff0c;本次写这篇文章算是想要对我…

技巧丨哔哩哔哩转正答题技巧

技巧丨哔哩哔哩转正答题技巧 技巧丨哔哩哔哩转正答题技巧 准备工具答题 卷一&#xff08;第一部分&#xff09;卷一&#xff08;第二部分&#xff09;卷二&#xff1a;自选题 前言&#xff1a;前几天在B站看视频&#xff0c;想吐槽一下内容&#xff0c;结果发现需要转正后才能…

哔哩哔哩第三方神器软件,早该用上了

今天分享几个b站第三方神器app&#xff0c;下载地址在公众号苏生不惑后台回复 b站。 BBLL 哔哩哔哩2023最新第三方TV和pad端开源软件https://github.com/xiaye13579/BBLL &#xff0c;支持8K、弹幕、直播&#xff0c;大会员通用&#xff0c;首页只有推荐、热门、番剧、影视等模…

Miko二次元动漫视频网站源码 视频播放带仿哔哩哔哩视频字幕弹幕

非常大气漂亮的Miko动漫视频网站整站源码&#xff0c;二次元动漫网源码。Dz后台管理方便&#xff0c;整站数据都设置好了&#xff0c;传上即可制作一个完整的动漫网。 安装教程&#xff1a; 1.源码上传到空间 2.自己修改里面数据库信息&#xff08;错一个网站就打不开&#xff…

哔哩哔哩弹幕api及一些解释

有两个弹幕api接口&#xff0c;分别是移动端与电脑端 https://comment.bilibili.com/ cid .xml https://api.bilibili.com/x/v1/dm/list.so?oid cid以电脑端为例子&#xff0c;使用谷歌浏览器打开某个哔哩哔哩的视频&#xff1a; 右键–检查–network–刷新–一个个找吧&…

哔哩哔哩自动生成视频上传,B站发布软件使用教程

哔哩哔哩自动生成视频上传&#xff0c;B站发布软件使用教程&#xff0c;全自动引流发帖软件介绍#引流发帖软件#全自动引流发帖#引流推广#拓客引流#爆粉软件 大家好&#xff0c;我是百收编辑狂潮老师&#xff0c;下面给大家讲一下 b 站上传软件它的一个使用方法。第一次使用的时…

【大厂直通车】哔哩哔哩日常实习_测开面经

📑哈喽,大家好,我是小浪;本篇博客更新的是最新B站测开面经,本专栏非常适合目前准备找实习,或者准备冲秋招测试,测开方向的同学阅读订阅,持续更新各大厂真题面经,带你成为offer收割机!! 🧃对于订阅本专栏的同学们,博主在努力更新,只需要一杯奶茶钱,订阅本专栏,…

如何在微信公众号的文章推送中展示bilibili的视频

0x00 需求背景&#xff1a; 我们学院举办了一个短视频设计大赛&#xff0c;需要在官方公众号里进行线上投票&#xff0c;选出大家最喜欢的视频。 然而微信公众号的文章推送中&#xff0c;限制了每篇文章只能上传三部视频&#xff0c;而我们需要把三十部作品都放到一篇文章中…

从B站 (哔哩哔哩) 泄露的源码里发现了B站视频推荐的秘密

这两天闲来无事&#xff0c;回顾了一下年前B站沸沸扬扬的代码泄露事件&#xff0c;大致翻阅了一些泄露的代码发现了一些有意思的事情&#xff0c;其中就包括 B站视频推荐 加权部分算法 的相关代码。 不过后期 B站官方辟谣说是老版本代码&#xff0c;并且已经进行相应的防御措施…

哔哩哔哩用户需求分析报告

先说总结与建议 根据需求优先级列表排序和用户需求程度排序&#xff0c;基于对目标群体的认知和日常使用&#xff0c;总结出以下几点优化建议&#xff1a; 内容方面 加强内容审查&#xff0c;同时加快内容审核。针对UP主上传的视频内容&#xff0c;可提供用户评分功能&#…

国足晋级12强 | 爬取《NBA30支球队》“现役球员信息”,再来看看篮球吧!

我爸对篮球真可是相当钟爱&#xff0c;基本是每个赛季必追。我就不同了&#xff0c;自从高中毕业后&#xff0c;就再也没怎么看篮球了。于是&#xff0c;我就有感而发&#xff0c;是否可以爬取现役球员的一些信息&#xff0c;看看我还有几个认识的。 1. 页面分析 我爬取的页…

“元宇宙”是什么?涂子沛:人可在数据空间“复活”

点击上方“程序猿技术大咖”&#xff0c;关注并选择“设为星标” 回复“加群”获取入群讨论资格&#xff01; 来源&#xff1a;https://view.inews.qq.com/a/20211204A047MY00 “最近热火的‘元宇宙’&#xff0c;其实是在原有的空间中增加了数据空间&#xff0c;在这个数据空间…

计算机学院篮球赛,“新生杯”,篮球热火——记重庆大学计算机学院小组篮球赛第五场...

2016年11月3日中午12点40分&#xff0c;梅园篮球场&#xff0c;等待着与计算机学院少年的篮球之约&#xff0c;阳光正好&#xff0c;少年风华正茂。 参与篮球赛第五场的共有两组比赛。第一组是16级物联VS16级计科6班&#xff0c;由15级计科1班的洪浩和16级计科3班的李润南担任裁…

云中,雁门关外

大同&#xff0c;塞外&#xff0c;黄土高坡&#xff0c;云中。 晋剧、北路梆子、耍孩、数来宝&#xff0c;汇聚一堂。 这里是贾樟柯的英雄地&#xff1a;《任逍遥》《江湖儿女》皆出于此地。这里的男人说话爱拍肩膀拍胸脯拍大腿。 大同的天气四季分明&#xff0c;常年少雨&…

热火赛前获专家一致看好 凯尔特人难再入总决赛

资料图&#xff1a;詹姆斯在场上仍然势不可挡。中新社发 张炜 摄 中新网5月28日 随着凯尔特人在抢七中大胜费城76人&#xff0c;NBA东部决赛的对阵双方也已尘埃落定。对此&#xff0c;ESPN邀请了14位篮球专家对东区决赛的前景进行了预测。结果显示&#xff0c;迈阿密热火的支持…

最近抖音热火的华为太空人手表,附源码下载

一、效果展示 用javascript写的一个太空人表盘。源码请从文章末尾获取下载 原文地址&#xff1a;https://blog.csdn.net/weixin_43532890/article/details/115047940 源码下载&#xff1a;https://pan.baidu.com/s/1SFOFQCIW1Jn9J5u0HjTQKg 密码: 5mv9

猜想:企业SaaS热火之后……

企业SaaS目前热火涌动&#xff0c;尤其在云计算、大数据、移动应用、互联网金融等新概念簇拥下&#xff0c;创业者、投资者、客户似乎对于这一并不很新的概念追捧度大幅提升。 那企业SaaS未来将会怎样&#xff0c;试着做些猜想。 从碎片化到集成 现在的企业SaaS业务基本都是从某…

AI数据标注工具Doccano

Doccano是一款开源的标注工具&#xff0c;用于自然语言处理和机器学习任务。它提供了用户友好的界面&#xff0c;使用户能够轻松地标注文本、序列标注、文本分类和文本配对等任务。doccano支持多种标注格式&#xff0c;并且可以方便地与其他机器学习工具集成。它的简单性和灵活…