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站弹幕并进行数据可视化相关推荐

  1. Python爬取B站弹幕方法介绍

    Python爬取B站弹幕方法介绍 文章目录 Python爬取B站弹幕方法介绍 前言 寻找弹幕数据 编写爬虫 B站弹幕数量 新技术介绍 参考文章 前言 最近同学要做东西,需要用 B 站的视频对应的弹幕数 ...

  2. python接收弹幕_闲着没事,尝试一下用Python爬取B站弹幕呀~

    原标题:闲着没事,尝试一下用Python爬取B站弹幕呀~ 前言 最近同学要做东西,需要用 B 站的视频对应的弹幕数据做分析,于是请我帮忙爬取 B 站视频的弹幕数据. 对于爬虫而言,我们需要找到对应数据 ...

  3. 萌新学习Python爬取B站弹幕+R语言分词demo说明

    代码地址如下: http://www.demodashi.com/demo/11578.html 一.写在前面 之前在简书首页看到了Python爬虫的介绍,于是就想着爬取B站弹幕并绘制词云,因此有了这 ...

  4. 用Python爬取B站弹幕并做成词云

    用Python爬取B站弹幕并做成词云 一.获取视频的cid号 1.进入想爬的视频,打开浏览器设置里的"开发者工具": 进入NetWork后等待requests刷出,数据够了后可随意 ...

  5. 爬取B站视频播放量及数据可视化

    爬取B站视频播放量及数据可视化 1.爬取数据 运行 运行结果 2.数据分析 2.1读取数据 2.2数据预处理 2.3数据可视化 (1)发布数量及播放数量折线图 (2)不同分区的视频发布数量所占百分比, ...

  6. python爬取b站弹幕分析_B站弹幕爬取原理解析(python)

    感谢 原理 概念 cid : 爬取弹幕需要的id号,可以由BV号通过API接口获得 步骤BV转cid 浏览器输入:https://api.bilibili.com/x/player/pagelist? ...

  7. Python爬取B站弹幕+Gephi梳理主线剧情

    作者 | 皖渝 出品 | 凹凸数据(ID:alltodata) 头图 |  CSDN 下载自东方IC 爬取介绍 利用 Chrome 浏览器抓包可知,B站的弹幕文件以 XML 文档式进行储存,如下所示( ...

  8. python爬取b站弹幕_如何爬取B站弹幕

    前言 主要记录自己完成爬虫的思路:从how to do到what to do这是一个拿 python 练手的项目,虽说是入门级,但其余爬虫也万变不离其宗 ̄へ ̄ [源代码地址 Github:bili-d ...

  9. 用Python爬取b站弹幕,看大家还会接受《爱情公寓5》吗?

    尽管抄袭傍身,也没能阻挡<爱情公寓5>进击的脚步. 最近爱情公寓电视剧微博发布了长达8分钟的揭幕视频,官宣新季将在2020正式开播. 几位主演纷纷转发宣传,将#爱情公寓5揭幕#的话题送上了 ...

最新文章

  1. 算法—实现排列 A(n,m)
  2. 解决:redis.clients.jedis.exceptions.JedisDataExceptionERR This instance has cluster support disabled
  3. 程序员的鄙视链,你被鄙视了吗?
  4. 关于flex的crossdomain.xml文件存放目录
  5. gitlab导入本地项目_Gitlab使用心得
  6. java基于ssm的个人博客系统_一个基于 Spring Boot 的开源免费博客系统
  7. SharePoint2010 获取网站集SPSite,SPWeb对象的4种方法
  8. 二进制流 最后一段数据是最后一次读取的byte数组没填满造成的
  9. go 调用 另一个go 的方法_Go 经典入门系列 17:方法
  10. 上司:我们为什么要使用企业云盘?
  11. php 5.4 mysql 5.7_致命错误:在将PHP 5.4.22和MySQL 5.5与Apache 2.4.7连接时调用未定义的函数mysqli_connect()...
  12. 基于射频的石油热解开采的一些资料
  13. 一款 Java 开源的 Spring Boot 即时通讯 IM 聊天系统(源码自取)
  14. HTML 网页特殊符号代码大全
  15. 『2021最新~解决』The push refers to a repository [docker.io/
  16. 求Kinetics400,AVA,prcv2018,Moments in time challenge2018,youtube8M,ActivityNet数据集,原始视频
  17. apicloud studio 怎么开启自动wifi同步?
  18. 多元线性回归及案例(Python)
  19. 用pandas绘制箱体图(boxplot)
  20. 如何让自己像打王者荣耀一样发了疯、拼了命、石乐志的学习?(强烈推荐)

热门文章

  1. Pipenv使用指南:轻量级虚拟环境管理工具详解
  2. 树莓派:4.2寸墨水屏
  3. python零基础入门pdf-零基础入门学习Python PDF 扫描版
  4. 多条目+Xbanner
  5. 《软件工程》个人总结
  6. 最清晰的Android冷启动优化解析
  7. Servlet生命周期及特性总结
  8. 浅析业务流程改进步骤
  9. 网络维护--路由器设置---fir302c(phicomm)
  10. 定位之父建议联想海外更名 Lenovo像甜点名称