python爬取B站弹幕学习笔记

首先打开B站地址:https://www.bilibili.com/video/av73262911

然后打开检查,选择net

 查找到list.so这个文件,找到我们需要的地址:

https://api.bilibili.com/x/v1/dm/list.so?oid=125428649

这个地址就是存放弹幕的文件

接下来我们之间用request模块去get文本,BeautifulSoup去处理获取文字,然后导入到词云

# 导入扩展库
import re  # 正则表达式库
import collections  # 词频统计库
import numpy as np  # numpy数据处理库
import jieba  # 结巴分词
import wordcloud  # 词云展示库
from PIL import Image  # 图像处理库
import matplotlib.pyplot as plt  # 图像展示库
import requests  # 网络爬取
from bs4 import BeautifulSoup  # html解析

url = "https://api.bilibili.com/x/v1/dm/list.so?oid=125428649"  # 弹幕地址
page = requests.get(url)  # 获取文本
page.encoding = 'utf-8'
soup = BeautifulSoup(page.text, 'html.parser')
content = soup.find_all('d')
string_data = ''
for i in content:
    string_data = string_data + i.text
print(string_data)

# 文本预处理
pattern = re.compile(u'\t|\n|\.|-|:|;|\)|\(|\?|"|(|)|《|》|:|?|!')  # 定义正则表达式匹配模式,匹配所有的标点空格,u是标志Unicode的编码字符
string_data = re.sub(pattern, '', string_data)  # 将符合模式的字符去除

# 文本分词
seg_list_exact = jieba.cut(string_data, cut_all=False)  # 精确模式分词
object_list = []
remove_words = [u'', u'', u'', u'', u'随着', u'对于', u'', u'', u'', u'', u'', u' ', u'', u'', u'', u'',
                u'通常', u'如果', u'我们', u'需要']  # 自定义去除词库

for word in seg_list_exact:  # 循环读出每个分词
    if word not in remove_words:  # 如果不在去除词库中
        object_list.append(word)  # 分词追加到列表

# 词频统计
word_counts = collections.Counter(object_list)  # 对分词做词频统计
word_counts_top10 = word_counts.most_common(10)  # 获取前10最高频的词
print(word_counts_top10)  # 输出检查
# print(word_counts)

# 词频展示
mask = np.array(Image.open('xin.jpg'))  # 定义词频背景
wc = wordcloud.WordCloud(
    font_path='C:/Windows/Fonts/simhei.ttf',  # 设置字体格式
    background_color="white",
    mask=mask,  # 设置背景图
    max_words=200,  # 最多显示词数
    # max_font_size=100  # 字体最大值
)

wc.generate_from_frequencies(word_counts)  # 从字典生成词云
image_colors = wordcloud.ImageColorGenerator(mask)  # 从背景图建立颜色方案
wc.recolor(color_func=image_colors)  # 将词云颜色设置为背景图方案
plt.imshow(wc)  # 显示词云
plt.axis('off')  # 关闭坐标轴
plt.show()  # 显示图像
View Code

效果如下:

 




猜你喜欢

转载自www.cnblogs.com/Json-Five/p/11908785.html