python爬取b站弹幕并进行数据可视化
python爬取b站弹幕并进行数据可视化
1.第一步,爬取b站弹幕
我们随便打开一个b站视频
打开开发者模式,在network下搜索list,可以找到该视频的弹幕文件
打开之后是这个样子的
结构还是比较简单的,我们后续爬取数据也就比较方便
下面是爬取弹幕的代码
// An highlighted block
from bs4 import BeautifulSoup#负责解析网页源码
import requests#负责爬取网页源码
import re#对解析后的文件进行弹幕匹配headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36",}
response = requests.get("https://api.bilibili.com/x/v1/dm/list.so?oid=130684654", headers=headers)
html_doc = response.content.decode('utf-8')
format = re.compile("<d.*?>(.*?)</d>")
DanMu = format.findall(html_doc)
#逐个输出弹幕
for i in DanMu:print(i)
这是实现效果
2.第二步,对弹幕进行文件存储
这里我们需要导入新的库
// An highlighted block
import csv
对第一次的代码进行部分修改
// An highlighted block
for i in DanMu:with open(r'C:\Users\Administrator\Desktop\b站弹幕.csv',"a", newline='',encoding='utf-8-sig') as csvfile: writer= csv.writer(csvfile)danmu = []danmu.append(i)writer.writerow(danmu)
以下是实现效果
这样我们就实现了弹幕的存储功能
3.将数据进行可视化
这里我们使用wordcloud库进行最简单的实现
// An highlighted block
import wordcloud
# 从外部.txt文件中读取大段文本,存入变量txt中
f = open('C:/Users/Administrator/Desktop/b站弹幕.csv',encoding='utf-8')
txt = f.read()# 构建词云对象w,设置词云图片宽、高、字体、背景颜色等参数
w = wordcloud.WordCloud(width=1000,height=700,background_color='white',font_path='msyh.ttc')# 将txt变量传入w的generate()方法,给词云输入文字
w.generate(txt)# 将词云图片导出到当前文件夹
w.to_file('C:/Users/Administrator/Desktop/output3.png')
以下是实现效果
当然你也可以对词云进行更加复杂的控制,例如指定形状,设置停词等,以下展示最终的成品代码
// An highlighted block
from bs4 import BeautifulSoup
import requests
import re
import csv
# 导入词云制作库wordcloud和中文分词库jieba
import jieba
import wordcloud
# 导入imageio库中的imread函数,并用这个函数读取本地图片,作为词云形状图片
import imageio
mk = imageio.imread("C:/Users\Administrator\Desktop\code\chinamap.png")
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36",}response = requests.get("https://api.bilibili.com/x/v1/dm/list.so?oid=130684654", headers=headers)
#print(response.text)
html_doc = response.content.decode('utf-8')
#soup = BeautifulSoup(html_doc,'lxml')
format = re.compile("<d.*?>(.*?)</d>")
DanMu = format.findall(html_doc)for i in DanMu:with open(r'C:\Users\Administrator\Desktop\b站弹幕.csv',"a", newline='',encoding='utf-8-sig') as csvfile: writer= csv.writer(csvfile)danmu = []danmu.append(i)writer.writerow(danmu)# 构建并配置词云对象w,注意要加stopwords集合参数,将不想展示在词云中的词放在stopwords集合里,这里去掉“曹操”和“孔明”两个词
w = wordcloud.WordCloud(width=1000,height=700,background_color='white',font_path='msyh.ttc',mask=mk,scale=15,stopwords={' '},contour_width=5,contour_color='red')# 对来自外部文件的文本进行中文分词,得到string
f = open('C:/Users/Administrator/Desktop/b站弹幕.csv',encoding='utf-8')
txt = f.read()
txtlist = jieba.lcut(txt)
string = " ".join(txtlist)# 将string变量传入w的generate()方法,给词云输入文字
w.generate(string)# 将词云图片导出到当前文件夹
w.to_file('C:/Users/Administrator/Desktop/output2-threekingdoms.png')
以下是最终实现效果
python爬取b站弹幕并进行数据可视化相关推荐
- Python爬取B站弹幕方法介绍
Python爬取B站弹幕方法介绍 文章目录 Python爬取B站弹幕方法介绍 前言 寻找弹幕数据 编写爬虫 B站弹幕数量 新技术介绍 参考文章 前言 最近同学要做东西,需要用 B 站的视频对应的弹幕数 ...
- python接收弹幕_闲着没事,尝试一下用Python爬取B站弹幕呀~
原标题:闲着没事,尝试一下用Python爬取B站弹幕呀~ 前言 最近同学要做东西,需要用 B 站的视频对应的弹幕数据做分析,于是请我帮忙爬取 B 站视频的弹幕数据. 对于爬虫而言,我们需要找到对应数据 ...
- 萌新学习Python爬取B站弹幕+R语言分词demo说明
代码地址如下: http://www.demodashi.com/demo/11578.html 一.写在前面 之前在简书首页看到了Python爬虫的介绍,于是就想着爬取B站弹幕并绘制词云,因此有了这 ...
- 用Python爬取B站弹幕并做成词云
用Python爬取B站弹幕并做成词云 一.获取视频的cid号 1.进入想爬的视频,打开浏览器设置里的"开发者工具": 进入NetWork后等待requests刷出,数据够了后可随意 ...
- 爬取B站视频播放量及数据可视化
爬取B站视频播放量及数据可视化 1.爬取数据 运行 运行结果 2.数据分析 2.1读取数据 2.2数据预处理 2.3数据可视化 (1)发布数量及播放数量折线图 (2)不同分区的视频发布数量所占百分比, ...
- python爬取b站弹幕分析_B站弹幕爬取原理解析(python)
感谢 原理 概念 cid : 爬取弹幕需要的id号,可以由BV号通过API接口获得 步骤BV转cid 浏览器输入:https://api.bilibili.com/x/player/pagelist? ...
- Python爬取B站弹幕+Gephi梳理主线剧情
作者 | 皖渝 出品 | 凹凸数据(ID:alltodata) 头图 | CSDN 下载自东方IC 爬取介绍 利用 Chrome 浏览器抓包可知,B站的弹幕文件以 XML 文档式进行储存,如下所示( ...
- python爬取b站弹幕_如何爬取B站弹幕
前言 主要记录自己完成爬虫的思路:从how to do到what to do这是一个拿 python 练手的项目,虽说是入门级,但其余爬虫也万变不离其宗 ̄へ ̄ [源代码地址 Github:bili-d ...
- 用Python爬取b站弹幕,看大家还会接受《爱情公寓5》吗?
尽管抄袭傍身,也没能阻挡<爱情公寓5>进击的脚步. 最近爱情公寓电视剧微博发布了长达8分钟的揭幕视频,官宣新季将在2020正式开播. 几位主演纷纷转发宣传,将#爱情公寓5揭幕#的话题送上了 ...
最新文章
- 算法—实现排列 A(n,m)
- 解决:redis.clients.jedis.exceptions.JedisDataExceptionERR This instance has cluster support disabled
- 程序员的鄙视链,你被鄙视了吗?
- 关于flex的crossdomain.xml文件存放目录
- gitlab导入本地项目_Gitlab使用心得
- java基于ssm的个人博客系统_一个基于 Spring Boot 的开源免费博客系统
- SharePoint2010 获取网站集SPSite,SPWeb对象的4种方法
- 二进制流 最后一段数据是最后一次读取的byte数组没填满造成的
- go 调用 另一个go 的方法_Go 经典入门系列 17:方法
- 上司:我们为什么要使用企业云盘?
- php 5.4 mysql 5.7_致命错误:在将PHP 5.4.22和MySQL 5.5与Apache 2.4.7连接时调用未定义的函数mysqli_connect()...
- 基于射频的石油热解开采的一些资料
- 一款 Java 开源的 Spring Boot 即时通讯 IM 聊天系统(源码自取)
- HTML 网页特殊符号代码大全
- 『2021最新~解决』The push refers to a repository [docker.io/
- 求Kinetics400,AVA,prcv2018,Moments in time challenge2018,youtube8M,ActivityNet数据集,原始视频
- apicloud studio 怎么开启自动wifi同步?
- 多元线性回归及案例(Python)
- 用pandas绘制箱体图(boxplot)
- 如何让自己像打王者荣耀一样发了疯、拼了命、石乐志的学习?(强烈推荐)