Python如何爬取视频网站弹幕并做成词云图
发表于:2024-10-23 作者:千家信息网编辑
千家信息网最后更新 2024年10月23日,这篇文章将为大家详细讲解有关Python如何爬取视频网站弹幕并做成词云图,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。大家好,最近的"瓜",多到我们措
千家信息网最后更新 2024年10月23日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安全错误
数据库的锁怎样保障安全
最早社交软件开发者
网络安全教育平台浙江
巩义蝶变网络技术服务有限公司
手机怎么关闭网络安全防护
青白江守望者软件开发工作室
信息网络安全专业考研科目
自学ui用什么软件开发
格力应用软件开发校招
mdb如何合并数据库
jsp访问数据库查询单行数据
戴尔服务器r410
网络安全事件 应当依照
云终端管理服务器
移动门户的服务器
服务器2008 r2
请列出中文医学文献数据库
中行软件开发中心官网
上海皓洹网络技术
数据库规范程度较低
日医学馆 互联网科技
光速宽带网络技术服务
树莓派开启ptp服务器
国际服的体验服如何换服务器
软件开发是销售服务吗
怀化口碑好的软件开发报价
广州超仪互联网科技有限公司
oral数据库如何修复
网络安全材料作文
服务器安全狗修复漏洞失败
大华网络存储服务器管理口