python爬虫爬取B站视频字幕,词频统计,使用pyecharts画词云(wordcloud)
我们使用beatifulsop爬取到B站视频的字幕:https://www.cnblogs.com/becks/p/14540355.html
然后将爬取的字幕,使用pandas处理后写到CSV文件中:https://www.cnblogs.com/becks/p/14738496.html
本篇,实现将字幕分词处理后词云化显示,可更加直观的了解字幕的核心词汇都有哪些
思路,爬到字幕后,将字幕分词处理,统计词频(所有词的出现频率),然后根据出现频率设置词的显示大小
需要用到以下库
from bs4 import BeautifulSoup#爬虫
import requests
import pandas as pd#数据处理
import jieba#分词
from collections import Counter#分词后词频统计
from pyecharts.charts import WordCloud#词云
如果出现下图中no module named‘pandas’,提示,即缺少上面需要的库,可通过cmd执行pip install xxx(这里是pandas)来安装
安装pyecharts时需要注意,本案例使用的是1.9.0版本,0.x.x版本与1.9.0版本差别很大互不兼容,可能会出现很多错误或者方法不可用,请注意版本
爬取和数据提取在前面两篇文章已经介绍过了,直接贴代码部分
#获取弹幕
url = 'http://comment.bilibili.com/309778762.xml'
html = requests.get(url)
html.encoding='utf8'
soup = BeautifulSoup(html.text,'lxml')
results = soup.find_all('d') #对弹幕数据进行处理,主要是提取弹幕内容,去掉标签和其他html符号
comments = [comment.text for comment in results]#从爬取的数据中取出弹幕数据,返回文本内容
分词和统计词频,中间的步骤如果需要了解的话,建议每一步后面print一下定义的变量,这样才可以更加直观的看到数据在所有步骤中是如何转换的
#分词及统计词频
text = ''.join(comments)#对获取的comments数据进行处理,去除中间的‘,’,具体参考https://blog.csdn.net/weixin_42986099/article/details/83447926
words = list(jieba.cut(text))#jieba分词
ex_sw_words = []
for word in words:
if len(word)>1:#去掉字数不足2个的词
ex_sw_words.append(word)
c = Counter()
c = Counter(ex_sw_words)#统计分词后所有词语出现的频率
wc_data = pd.DataFrame({'word':list(c.keys()), 'counts':list(c.values())}).sort_values(by='counts', ascending=False).head(100)
#重建数据,具体参考https://www.cnblogs.com/andrew-address/p/13040035.html
a = wc_data['word'].values.tolist()
b = wc_data['counts'].values.tolist()
name_tulpe = list(zip(a,b))#创建集合,使数据满足wordcloud对传入数据的要求
重建数据及创建集合的另外一种写法
c = Counter()
c = Counter(ex_sw_words)#统计分词后所有词语出现的频率 list_1=[]
list_2=[]
for i in c.keys():
list_1.append(i)
for h in c.values():
list_2.append(h)
name_tulpe = list(zip(list_1,list_2))
生成词云,wordcloud 对传入参数有严格的要求,具体参考文内的链接
#wordcloud对传入参数的要求参考
# https://gallery.pyecharts.org/#/WordCloud/wordcloud_custom_mask_image
# https://pyecharts.org/#/zh-cn/basic_charts?id=wordcloud:词云图 #将分词和统计词频后的内容用词云显示出来
wordcloud = WordCloud()
wordcloud.add("",name_tulpe,word_size_range=[15, 80])
wordcloud.render('wordcloud.html')
执行脚本后生成的词云效果
附全部脚本
# -*- coding: utf-8 -*- from bs4 import BeautifulSoup#爬虫
import requests
import pandas as pd#数据处理
import jieba#分词
from collections import Counter#分词后词频统计
from pyecharts.charts import WordCloud#词云 #获取弹幕
url = 'http://comment.bilibili.com/309778762.xml'
html = requests.get(url)
html.encoding='utf8'
soup = BeautifulSoup(html.text,'lxml')
results = soup.find_all('d') #对弹幕数据进行处理,主要是提取弹幕内容,去掉标签和其他html符号
comments = [comment.text for comment in results]#从爬取的数据中取出弹幕数据,返回文本内容 #分词及统计词频
text = ''.join(comments)#对获取的comments数据进行处理,去除中间的‘,’,具体参考https://blog.csdn.net/weixin_42986099/article/details/83447926
words = list(jieba.cut(text))#jieba分词
ex_sw_words = []
for word in words:
if len(word)>1:#去掉字数不足2个的词
ex_sw_words.append(word)
c = Counter()
c = Counter(ex_sw_words)#统计分词后所有词语出现的频率
wc_data = pd.DataFrame({'word':list(c.keys()), 'counts':list(c.values())}).sort_values(by='counts', ascending=False).head(100)#重建数据,具体参考https://www.cnblogs.com/andrew-address/p/13040035.html
a = wc_data['word'].values.tolist()
b = wc_data['counts'].values.tolist()
name_tulpe = list(zip(a,b))#创建集合,使数据满足wordcloud对传入数据的要求 #wordcloud对传入参数的要求参考
# https://gallery.pyecharts.org/#/WordCloud/wordcloud_custom_mask_image
# https://pyecharts.org/#/zh-cn/basic_charts?id=wordcloud:词云图 #将分词和统计词频后的内容用词云显示出来
wordcloud = WordCloud()
wordcloud.add("",name_tulpe,word_size_range=[15, 80])
wordcloud.render('c:/wordcloud.html')
关于词云绘制的另外一个案例,文内没有词频操作,但是可以自定义词云的显示样式,相对来说较简单
https://www.cnblogs.com/wkfvawl/p/11585986.html
python爬虫爬取B站视频字幕,词频统计,使用pyecharts画词云(wordcloud)的更多相关文章
- python爬虫:爬取慕课网视频
前段时间安装了一个慕课网app,发现不用注册就可以在线看其中的视频,就有了想爬取其中的视频,用来在电脑上学习.决定花两天时间用学了一段时间的python做一做.(我的新书<Python爬虫开发与 ...
- Python 自动爬取B站视频
文件名自定义(文件格式为.py),脚本内容: #!/usr/bin/env python #-*-coding:utf-8-*- import requests import random impor ...
- python爬虫——爬取B站用户在线人数
国庆期间想要统计一下bilibili网站的在线人数变化,写了一个简单的爬虫程序.主要是对https://api.bilibili.com/x/web-interface/online返回的参数进行分析 ...
- 爬虫---爬取b站小视频
前面通过python爬虫爬取过图片,文字,今天我们一起爬取下b站的小视频,其实呢,测试过程中需要用到视频文件,找了几个网站下载,都需要会员什么的,直接写一篇爬虫爬取视频~~~ 分析b站小视频 1.进入 ...
- 爬虫之爬取B站视频及破解知乎登录方法(进阶)
今日内容概要 爬虫思路之破解知乎登录 爬虫思路之破解红薯网小说 爬取b站视频 Xpath选择器 MongoDB数据库 爬取b站视频 """ 爬取大的视频网站资源的时候,一 ...
- Python爬虫 - 爬取百度html代码前200行
Python爬虫 - 爬取百度html代码前200行 - 改进版, 增加了对字符串的.strip()处理 源代码如下: # 改进版, 增加了 .strip()方法的使用 # coding=utf-8 ...
- 用Python爬虫爬取广州大学教务系统的成绩(内网访问)
用Python爬虫爬取广州大学教务系统的成绩(内网访问) 在进行爬取前,首先要了解: 1.什么是CSS选择器? 每一条css样式定义由两部分组成,形式如下: [code] 选择器{样式} [/code ...
- 使用Python爬虫爬取网络美女图片
代码地址如下:http://www.demodashi.com/demo/13500.html 准备工作 安装python3.6 略 安装requests库(用于请求静态页面) pip install ...
- Python爬虫|爬取喜马拉雅音频
"GOOD Python爬虫|爬取喜马拉雅音频 喜马拉雅是知名的专业的音频分享平台,用户规模突破4.8亿,汇集了有声小说,有声读物,儿童睡前故事,相声小品等数亿条音频,成为国内发展最快.规模 ...
- python爬虫爬取内容中,-xa0,-u3000的含义
python爬虫爬取内容中,-xa0,-u3000的含义 - CSDN博客 https://blog.csdn.net/aiwuzhi12/article/details/54866310
随机推荐
- 萌新赛 sprintf漏洞
首先是个.git源码源码泄露,用githack回复一下源码 源码 <?php $pass=sprintf("and pass='%s'",addslashes($_GET[' ...
- 一个WPF下的虚拟键盘实现
给上位机触摸屏做一个虚拟键盘,这玩意儿不就是一排的网格里面放满button嘛 .说归这样说 依然还是有一堆细节需要你去处理的.不论如何 先画个键盘吧. 简单的从网上找个键盘位图做参照使用 4行Grid ...
- react验证参数格式类型
首先你需要下载 cnpm i prop-types 安装验证数据类型的插件: 子组件 import React, { Component } from "react"; impor ...
- HTML布局常用标签——div和span
HTML布局常用标签--div和span 在HTML的世界里,div和span是两位不可或缺的老朋友,它们虽然看似简单,却在网页布局和样式设计中发挥着举足轻重的作用.今天,我们就来聊聊这两位" ...
- Q:Win10关闭内存压缩功能
微软在Win10中就已经启用了内存压缩机制,在Win11当中继续了这一设定. 通过任务管理器查看. taskmgr ·通过命令行查看. 使用系统管理员权限,打开PowerShell,然后输入以下命令: ...
- 这或许是全网最全的 DeepSeek 使用指南,95% 的人都不知道的使用技巧(建议收藏)
2025年春节过的好快,转眼间,大家又回到了各自工作岗位了,要说这个春节,什么最火,肯定绕不开DeepSeek. 几乎一夜之间,所有人都在关注DeepSeek,甚至我在老家,完全没用过AI的七大姑八大 ...
- 史陶比尔Stabli机器人维修小细节
在工业自动化领域,史陶比尔机器人以其卓越的性能和可靠性而著称.然而,即使是尖端的设备,也难免会遇到Stabli机械手故障和问题.对于机器人维护和修理,每一个小细节都显得至关重要. 一.观察 首先,我们 ...
- 莫托曼机器人GP110B操作手柄故障维修全攻略
莫托曼机器人GP110B操作手柄故障机器人维修全攻略 一.前言 莫托曼机器人GP110B操作手柄是机器人控制系统的重要组成部分,它允许操作人员对机 ...
- clickhouse--表引擎
表引擎 表引擎(即表的类型)决定了: 1)数据的存储方式和位置,写到哪里以及从哪里读取数据 2)支持哪些查询以及如何支持. 3)并发数据访问. 4)索引的使用(如果存在). 5)是否可以执行多线程请求 ...
- 机器学习 | 强化学习(3) | 无模型预测(Model-Free Prediction)
无模型预测(Model-Free Prediction) 无模型预测概论 上一节课<通过DP求解>可以解决一个已知的马尔科夫决策过程 本节课 实践无模型预测 解决或者估计一个未知马尔科夫决 ...