文章目录
目录
前言
爬取b站视频弹幕,并生成词云图。
一、引入库
from bs4 import BeautifulSoup#负责解析网页源码
import requests#负责爬取网页源码
import re#对解析后的文件进行弹幕匹配
import csv
import wordcloud
import jieba.analyse
二、爬取
1.获取弹幕并格式化
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36",
}
response = requests.get("https://comment.bilibili.com/577997830.xml", headers=headers)
html_doc = response.content.decode('utf-8')
format = re.compile("<d.*?>(.*?)</d>")
DanMu = format.findall(html_doc)
#逐个输出弹幕
for i in DanMu:
print(i)
2.保存数据
代码如下
for i in DanMu:
with open(r'.\b站弹.csv',"a", newline='',encoding='utf-8-sig') as csvfile:
writer= csv.writer(csvfile)
danmu = []
danmu.append(i)
writer.writerow(danmu)
3.绘制词云图
# 从外部.txt文件中读取大段文本,存入变量txt中
f = open('./b站弹.csv',encoding='utf-8')
txt = f.read()
# 构建词云对象w,设置词云图片宽、高、字体、背景颜色等参数
w = wordcloud.WordCloud(width=1000,
height=700,
background_color='white',
font_path='msyh.ttc')
# 将txt变量传入w的generate()方法,给词云输入文字
w.generate(txt)
# 将词云图片导出到当前文件夹
w.to_file('./output3.png')
使用jieba分词
f =open(r'.\b站弹.csv',encoding='utf-8')#打开文件
text=f.read() #读取文件
text_list=jieba.analyse.extract_tags(text,topK=40)#进行jieba分词,并且取频率出现最高的40个词
text_list=",".join(text_list)#用空格将这些字符串连接起来
print(text_list)
出现频率高的词:
王嘉尔,啊啊啊,太帅,七哥,王嘉尔牛,嘉尔,切拉,好帅,真的,哈哈哈,收音,内娱,我爱你,开麦,口香糖,舞台,骄傲,首歌,嘎嘎,卧槽,音乐节,救命,亿遍,宇多田光,王哥,哈哈哈哈,垫音,耳麦,这个,呜呜,新歌,好听,太野,China,这首,歌手,现场,Jackson,WANG,CHINA
词云图: