栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

爬取b站“开启一个时代”周杰伦mv《可爱女人》弹幕,以及词云制作

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

爬取b站“开启一个时代”周杰伦mv《可爱女人》弹幕,以及词云制作

 周杰伦yyds!!!!!!!!!!!

 周杰伦yyds!!!!!!!!!!!

前几天学习了csdn榜一的EDG夺冠弹幕爬取以及词云图的制作,今天心血来潮就来举一反三爬取b站周杰伦《可爱女人》的弹幕制作词云图。

打开b站搜索周杰伦,选取点击最多

 

 进入视频

“亚洲流行音乐之王”映入眼帘

接下来让我们把这些弹幕爬下来

 右击鼠标,选择检查

点击“网络”

 

 然后刷新浏览器界面

 接下来只要找到弹幕的网络接口就好啦!

但是现在b站已经很难找到网络接口了

不过我们可以用以前的API: https://api.bilibili.com/x/v1/dm/list.so?oid=XXX

每一个视频都对应一个oid哦,所以现在我们需要找到oid

怎么找到oid呢?点开视频右端的弹幕列表,点击打开历史弹幕

 然后在筛选器里输入history

 点击下方第一个url文件并拖至最底端

 所以我们要找的oid=2154848

所以API为 https://api.bilibili.com/x/v1/dm/list.so?oid=2154848

打开这个网站试试看

 

 是我们想要的弹幕

API找到了,接下来开始爬取并且保存

import re
import requests
url="https://api.bilibili.com/x/v1/dm/list.so?oid=2154848"
res=requests.get(url)
res.encoding=res.apparent_encoding
ResText=res.text
pattern=re.compile(r'(.*?)')##运用正则表达式
data=pattern.findall(ResText)
# 保存数据
with open("《可爱女人》弹幕.txt",mode="a",encoding="utf-8") as f:
    for i in data:
            f.write(i)
            f.write("n")

 成功爬取并保存。(是不是很简单)

接下来以下面这张图片制作词云图

# -*- coding: utf-8 -*-
"""
Created on Wed Nov 10 08:51:02 2021

@author: asus
"""

# 1 导入相关库
import pandas as pd
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
from imageio import imread

import warnings
warnings.filterwarnings("ignore")

# 注意:动态添加词语集
for i in ["周杰伦","华语乐坛第一人","亚洲流行音乐之王","还有谁","地表最强"]:
    jieba.add_word(i)

# 2 读取文本文件,并使用lcut()方法进行分词
with open("《可爱女人》弹幕.txt",encoding="utf-8") as f:
    txt = f.read()
txt = txt.split()
txt = [i.upper() for i in txt]
data_cut = [jieba.lcut(x) for x in txt]

# 3 读取停用词
with open("stoplist.txt",encoding="utf-8") as f:
    stop = f.read()
stop = stop.split()
stop = [" "] + stop

# 4 去掉停用词之后的最终词
s_data_cut = pd.Series(data_cut)
all_words_after = s_data_cut.apply(lambda x:[i for i in x if i not in stop])

# 5 词频统计
all_words = []
for i in all_words_after:
    all_words.extend(i)
word_count = pd.Series(all_words).value_counts()

# 6 词云图的绘制
# 1)读取背景图片
back_picture = imread("zjl.jpg")

# 2)设置词云参数
wc = WordCloud(font_path="simhei.ttf",
               background_color="white",
               max_words=1000,
               mask=back_picture,
               max_font_size=200,
               random_state=42
              )
wc2 = wc.fit_words(word_count)

# 3)绘制词云图
plt.figure(figsize=(16,8))
plt.imshow(wc2)
plt.axis("off")
plt.show()
wc.to_file("周杰伦词云.png")

然后等一小会~

Woo~

是不是很酷!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/461209.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号