原来大家这么喜欢上课
1.成果展示
部分弹幕爬取
可爱和性感在猛男面前 不堪一击
试图招手让摄像走开(
讲道理,00子是融入小破站最用心的艺人了
金杯银杯不如老百姓的口碑
所以首先感谢我自己()
害怕
东尼东尼东尼东尼东尼东尼东尼东尼
老坛~
团长!!!
罗老师好
boy
boy
快进略过
来啦
啊啊啊啊
罗老师好
茄哥
鹤吱菌
哇
花海中的少年一路向北
你好坏哦!我好喜欢
哈哈哈哈
罗老师好
不客气!!
尼妹~
花海中的少年一路向北
哈哈哈哈哈哈哈哈
用爱发电
扯证的男孩
罗翔老师啊啊啊啊
挖帅的
比前面的舞蹈有趣
老板
是小卢才对
泛鸽鸽
秃凉
好哈哈哈哈
蕾丝还帅
xiye nb
词云展示
2.源代码展示及使用
2.1获取弹幕文本
import requests
import json
import re
# 下载页面
def download_page(url):
headers = {
'user - agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36 Edg/85.0.564.63'
}
res = requests.get(url=url, headers=headers)
return res
# 根据av号获取cid
def get_cid(bv):
"""
bv:b站视频的bv号:https://www.bilibili.com/video/BV1B54y1k7SB
"""
bv = bv.strip('bv')
url = f"https://api.bilibili.com/x/player/pagelist?bvid={bv}&jsonp=jsonp"
res = download_page(url)
res_text = res.text
res_dict = json.loads(res_text)
cid = res_dict['data'][0]['cid']
return cid
# 根据cid请求弹幕
def get_dan_mu(cid):
url = f'https://api.bilibili.com/x/v1/dm/list.so?oid={cid}'
res = download_page(url)
res_xml = res.content.decode('utf-8')
pattern = re.compile('<d.*?>(.*?)</d>')
dan_mu_list = pattern.findall(res_xml)
return dan_mu_list
# 解析家弹幕文件
# 保存弹幕文件
def save_to_file(dan_mu_list, filename):
with open(filename, mode='w', encoding='utf-8') as f:
for one_dan_mu in dan_mu_list:
f.write(one_dan_mu)
f.write("\n")
# 去爬取弹幕的主流程
def main(bv):
cid = get_cid(bv)
dan_mu_list = get_dan_mu(cid)
save_to_file(dan_mu_list, f'{bv}.txt')
if (__name__ == '__main__'):
# 在此处填写你需要爬取的视频的BV号
bv = 'BV1Sy4y117iz'
main(bv)
获取BV号,打开你喜欢的UP主在复制视频链接截取BV号即可
例如:## 标题https://www.bilibili.com/video/BV1c54y1W77q
漠叔的这个视频:
2.2生成词云
import jieba
from wordcloud import WordCloud
# 读取弹幕文件
"""
"""
def read_file (file_name):
with open(file_name,mode='r',encoding='utf-8')as f:
dan_mu = f.read()
return dan_mu
# 结巴分词
def jieba_cut(str):
# 返回分词的列表
jieba.suggest_freq('下次一定',tune=True)
jieba.suggest_freq('老干爹',tune=True)
cut_list = jieba.lcut(str)
print(cut_list)
return cut_list
# 生成词云图
def gen_word_cloud(cut_list,file_name):
word_str = ''.join(cut_list)
# 生成词云对象
wc_setting = {
'font_path':'msyh.ttc',
'width':800,
'height':500,
'background_color':'white',
'max_words':100
}
wc = WordCloud(**wc_setting).generate(word_str)
# 保存到图片
wc.to_file(file_name)
if __name__ == '__main__':
//这里的BV跟上面填写一致,就可以了,会生成以BV命名的图片
bv = 'BV1Sy4y117iz'
str = read_file(f'{bv}.txt')
cut_list = jieba_cut(str)
gen_word_cloud(cut_list,f'{bv}.png')
最后希望大家可以去爬一爬自己喜欢的up!!!