python爬虫(二):爬取B站《夏洛特烦恼》字幕,词云展示

本文介绍了如何使用Python爬虫获取B站视频《夏洛特烦恼》的字幕,通过分析字幕文本,利用结巴分词计算词频,进而生成词云进行可视化展示。爬虫主要针对文本数据,通过观察HTML和获取视频的oid来构造API请求URL,然后使用lxml解析XML数据并保存到本地。后续步骤包括词频统计和词云图的生成。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前面说过爬虫无非是文本、图片、音频,难度依次上升,虽然爬取数据的步骤是固定的,但是细节上的处理逻辑可能不同,比如html的解析方式、反爬取的手段、分布式爬取等,本文介绍最简单文本的爬虫方式,结合数据分析和可视化能力,争取能够做到一站式数据爬取、分析、可视化,奥利给。

 B站视频的特点是可以根据视频主键标识oid就可以得到字幕,一般使用地址:https://api.bilibili.com/x/v1/dm/list.so?oid=真实oid,找到oid的方法是在网页上通过F12查看网页信息,刷新网页后查看oid即可,如下:

本次使用《夏洛特烦恼》电源的实时字幕测试,在b站的链接是:https://www.bilibili.com/bangumi/play/ep320665?from=search&seid=12253113013013173840马什么梅啊,Ma What?

播放时候使用上述方法查找oid,发现用https://api.bilibili.com/x/v1/dm/list.so?oid=183896111的链接可以查看字母的XML文件列表:

1、首先,我们得到把字幕保存到本地,这里使用lxml包处理读取的HTML并提取其中元素,保存本地;

import requests
import jieba
import os
import numpy as np
from lxml import etree
from PIL import Image
import jieba.analyse
import matplotlib.pyplot as plt
from wordcloud import WordCloud, ImageColorGenerator

url = 'https://api.bilibili.com/x/v1/dm/list.so?oid=183896111'
headers={
        "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0"
         }
response=requests.get(url,headers=headers)
html=etree.HTML(response.content)
d_list=html.xpath("//d//text()")
print("+++++++++++++++++"+os.getcwd()+"+++++++++++++++++")
with open ('xialuote.txt',"a+",encoding="utf-8") as f:
    for t in d_list:
        f.write(t+'\n')

二、词云制作,使用结巴分词读取数据,并计算常用词汇出现的频率,使用wordcloud显示图片;

words = ''
f = open('xialuote.txt', 'r',encoding='utf-8')  
for i in f:
	words += f.read()
    

result = jieba.analyse.textrank(words, topK=450, withWeight=True)

keyworlds = dict()
for i in result:
	keyworlds[i[0]] = i[1]

#print(keyworlds)

image = Image.open('test.jpg') 
graph = np.array(image)
wc = WordCloud(font_path='simhei.ttf', background_color='Black', max_font_size=170, mask=graph)
wc.generate_from_frequencies(keyworlds)
image_color = ImageColorGenerator(graph)
plt.imshow(wc)
# plt.imshow(wc.recolor(color_func=image_color))
plt.axis('off')
plt.show()
wc.to_file('x.png')

原始图片:

输出图片:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A叶子叶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值