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

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

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

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

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

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

 

 进入视频

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

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

 右击鼠标,选择检查

点击“网络”

 

 然后刷新浏览器界面

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

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

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

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

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

 然后在筛选器里输入history

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

 所以我们要找的oid=2154848

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

打开这个网站试试看

 

 是我们想要的d幕

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("《可爱女人》d幕.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("《可爱女人》d幕.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~

是不是很酷!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5436716.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存