Python如何爬取视频网站弹幕并做成词云图
发表于:2024-11-26 作者:千家信息网编辑
千家信息网最后更新 2024年11月26日,这篇文章将为大家详细讲解有关Python如何爬取视频网站弹幕并做成词云图,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。大家好,最近的"瓜",多到我们措
千家信息网最后更新 2024年11月26日Python如何爬取视频网站弹幕并做成词云图
这篇文章将为大家详细讲解有关Python如何爬取视频网站弹幕并做成词云图,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
大家好,最近的"瓜",多到我们措手不及,可谓是"热点不断"。作为程序员,我们还可能随时为此而加班。
各种评论视频"爆炸"网络,打开首页全是热点话题的内容,某知名UP主发布视频都要错下峰。
我就在思考:这么火爆的话题和内容,有没有一种通用的分析方法?答案是:抓取弹幕或者评论。
下面就让我们以冰冰vlog的视频弹幕为例,来进行分析。
一、获取方法
1.网页解析:网页结构可能随时会发生变化。
2.python第三方api:可能会有维护跟不上的问题。
经过简单对比,我选择第一种方法。
二、网页分析
爬取弹幕的关键是获取视频的cid,有些地方也叫oid。通过浏览器的开发者模式我们不难找到该视频的cid。我们通过https://comment.bilibili.com/+视频的cid+.xml就可以爬取该视频所有弹幕了。
三、弹幕文件下载和解析
由于弹幕内容集中在xml文件里,我们需要对文件进行下载,使用xpath解析文件。
from lxml import etreeimport requestsimport timeimport jiebaimport numpy as npfrom PIL import Imagefrom wordcloud import WordCloud as wcclass Bilibili(): """docstring for Bilibili""" def __init__(self,oid): self.headers={ 'Host': 'api.bilibili.com', 'Connection': 'keep-alive', 'Cache-Control': 'max-age=0', 'Upgrade-Insecure-Requests': '1', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8', 'Accept-Encoding': 'gzip, deflate, br', 'Accept-Language': 'zh-CN,zh;q=0.9', 'Cookie': 'finger=edc6ecda; LIVE_BUVID=AUTO1415378023816310; stardustvideo=1; CURRENT_FNVAL=8; buvid3=0D8F3D74-987D-442D-99CF-42BC9A967709149017infoc; rpdid=olwimklsiidoskmqwipww; fts=1537803390' } self.url='https://api.bilibili.com/x/v1/dm/list.so?oid='+str(oid) self.barrage_reault=self.get_page() # 获取信息 def get_page(self): try: # 延时操作,防止太快爬取 time.sleep(0.5) response=requests.get(self.url,headers=self.headers) except Exception as e: print('获取xml内容失败,%s' % e) return False else: if response.status_code == 200: # 下载xml文件 with open('bilibili.xml','wb') as f: f.write(response.content) return True else: return False # 解析网页 def param_page(self): time.sleep(1) if self.barrage_reault: # 文件路径,html解析器 html=etree.parse('bilibili.xml',etree.HTMLParser()) # xpath解析,获取当前所有的d标签下的所有文本内容 results=html.xpath('//d//text()') return results
四、弹幕去重
重复的弹幕进行归类,未出现过的弹幕创建新的分类。为词频统计和词云做好准备。
# 弹幕去重def remove_double_barrage(self): ''' double_arrage:所有重复弹幕的集合 results:去重后的弹幕 barrage:每种弹幕内容都存储一遍 ''' double_barrage=[] results=[] barrage=set() for result in self.param_page(): if result not in results: results.append(result) else: double_barrage.append(result) barrage.add(result) return double_barrage,results,barrage
五、弹幕重复次数统计和制作词云
我们在网上照一张"王冰冰"的照片,进行简单的处理,作为词云的轮廓图。
# 弹幕重复次数和词云制作def make_wordCould(self): double_barrages,results,barrages=self.remove_double_barrage() # 重词计数 with open('barrages.txt','w') as f: for barrage in barrages: amount=double_barrages.count(barrage) f.write(barrage+':'+str(amount+1)+'\n') # 设置停用词 stop_words=['【','】',',','.','?','!','。'] words=[] if results: for result in results: for stop in stop_words: result=''.join(result.split(stop)) words.append(result) # 列表拼接成字符串 words=''.join(words) words=jieba.cut(words) words=''.join(words) bingbing=np.array(Image.open('冰冰.jpg')) w=wc(font_path='C:/Windows/Fonts/SIMYOU.TTF', background_color='white', width=900, height=600, max_font_size=15, min_font_size =1, max_words=3000, mask=bingbing) w.generate(words) w.to_file('bingbing.jpg') b=Bilibili(283851334)#视频的cidb.make_wordCould()#绘制词云
统计结果:
关于Python如何爬取视频网站弹幕并做成词云图就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
视频
内容
文件
网页
方法
分析
统计
云图
网站
文章
更多
次数
热点
知识
篇文章
话题
制作
评论
不错
知名
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
轻量服务器限制每天流量
个人财务管理系统数据库实训
守护网络安全呵护精神家园作文
eb服务器安装图解
软件开发个税
网络安全技术有课件
双色球2021数据库系统
网络安全学院生命学院
hana 数据库最大容量
数据库网上购物数据库设计
计算机网络安全基础知识题
金华市网络安全培训
网络安全法压力增大
电力网络安全记录
浙江发展网络技术咨询口碑推荐
大学专科计算机网络技术
网络安全技术书籍2015
在网络技术中 端口包括
浙江互通互联网络科技有限公司
服务器好好的提示磁盘满
整合网络安全产业领域
服务器维修专卖
中联重科软件开发
软件开发员的求职信
工控网络技术心得体会
数据库技术及应用电子版教材
十条关于网络安全
数据库唯一索引性能
万兆网络安全设备
软件开发销售代理