“网上冲浪”“886”“GG”“沙发”……如果你用过这些,那你可能是7080后;

“杯具”“神马”“浮云”“偷菜”……如果你用过这些,你可能是8090后;

“吃瓜群众”“一亿小目标”“蓝瘦,香菇”“主要看气质”……如果你用过这些,你可能是9000后;

“awsl”“逮虾户”“律师函警告”“挖藕”……如果你了解这些,你可能……

是混b站的吧!

大家好,我是大鹏,一位勉强通过b站会员考试的普通会员。

众所周知,b站弹幕是流行用语爆发的天堂,如果有一天你发现公司群里95、00后说话都听不懂了,来b站看看弹幕是很好的补习方式。可问题是,这么多视频这么多弹幕该从何看起呢?

数据分析师要有数据分析师的亚子,今天我就教大家用Python零基础来爬一爬这个小破站的弹幕,快速学习一些流行用语(完整教程代码会在文末放出)。

1.弹幕哪里找?
平常我们在看视频时,弹幕是出现在视频上的。实际上在网页中,弹幕是被隐藏在源代码中,以XML的数据格式进行加载的:

XML和JSON、YAML一样是一种通用的标记信息表达方式,可以简单的理解为一种记录数据的格式。XML和描述网页的语言HTML非常像,所以你会在截图中看到这样的标签。了解更多可以查看教程:https://www.runoob.com/xml/xml-intro.html

那么上图这个弹幕文件的url是什么呢?

https://comment.bilibili.com/92542241.xml

它以一个固定的url地址+视频的cid+.xml组成。只要找到你想要的视频cid,替换这个url就可以爬取所有弹幕了(b站大部分网页给出的字幕限制是1000条)。

一个视频的cid在哪里呢?右键网页,打开网页源代码,搜索cid”就能找到:

cid在网页源码中是一个很常见的词组,而我们要寻找的正确的cid都会写成"cid":xxxxxxxx的形式。为了缩小搜索范围,在后方加上一个引号会更快搜索到。

有了正确的cid,拼好url,我们就来写爬虫吧!

2.爬虫库到底是什么?
基本所有初学Python爬虫的人都会接触到requests、BeautifulSoup这两个工具库,这是两个常用基础库。requests用于向网站url发起请求,以获取网页代码;BeautifulSoup用于将HTML/XML内容解析,并提取里面的重要信息。

这两个库模拟了人访问网页,读懂网页并复制粘贴出对应信息的过程,能够批量地、快速地完成数据爬取。

3.开始爬取
观察网页,可以发现,所有的弹幕都放在了标签下,那么我们需要构建一个程序获取所有的标签:

第一步,导入requests库,使用request.get方法访问弹幕url:

import requests#获取页面数据html
url=r'https://comment.bilibili.com/78830153.xml'
r=requests.get(url)#访问url
r.encoding='utf8'

第二步,导入BeautifulSoup库,使用lxml解析器解析页面:

from bs4 import BeautifulSoup#解析页面
soup=BeautifulSoup(r.text,'lxml')#lxml是常用的解析器,需要提前使用pip工具安装lxml库
d=soup.find_all('d')#找到所有页面的d标签
#print(d)

这样操作后,所有藏在d标签里的弹幕内容就被python抓取到了 :

解析完成后,接下来第三步就是运用Python基础函数中的for函数,将单条数据装进字典,再将所有字典装进一个列表:

#解析弹幕,将弹幕、网址、时间整理为字典,最后加和成列表,共1000条数据
dlst=[]
n=0
for i in d:n+=1danmuku={}#将单条数据装进字典danmuku['弹幕']=i.textdanmuku['网址']=urldanmuku['时间']=datetime.date.today()#需要先导入datetime库dlst.append(danmuku)#将所有字典装进一个列表print('获取了%i条数据' %n)
#print(dlst)


此时整理好的弹幕数据如下,是不是已经有点常见的excel数据的意思了?

那我们就把它变得更加像excel数据吧!第四步导入大名鼎鼎的pandas库,一行代码将列表数据转为DataFrame数据,并保存到本地,爬虫的大体框架就完成了:

import pandas as pd#将列表变为DataFrame,使用pandas进行分析
df=pd.DataFrame(dlst)
df.to_excel('b站弹幕数据.xlsx')#讲爬下来的数据放在excel里

3.多个弹幕网址怎么爬?
没错,这个爬虫还存在很多可以优化的地方,比如是不是可以爬取多个弹幕?是不是可以封装起来,输入cid就出来结果呢?

当然可以。只要我们熟练掌握def定义函数功能,就可以把上述的爬虫功能写成一个爬取函数:

一键爬取一时爽,一直一键一直爽,完整代码就在文末,大家自己爽吧。

4.弹幕可以做什么分析?
鬼畜区出来的流行词永远是最有脑洞的,所以本文以最近很鬼畜的“巴啦啦小魔仙口胡”视频弹幕为例,教授流行用语:

首先看看,发弹幕的小伙伴有多少是话痨呢?

虽然大部分的弹幕都在10个字内解决,但平均来看大家会使用9.8个左右的字表达吐槽,最长的一位同学弹幕字数长达100字。10个字在平时说话可能就是一个短句,但是放在弹幕上已经是很长的一串了,看来刷弹的话痨还是很多的。

那么这些话痨都在说什么呢?

字数最多的前二十位同学就是在笑,沉浸式的大笑,果然人类的本质就是复读机:

既然说到复读机,除了哈哈哈以外,还有哪些词是经常被复读的呢?

“合影”“亚子”“雨女无瓜”“名场面”……不得不说这个小破站的网友脑洞清奇。有了这个,妈妈再也不愁我跟不上00后的步伐了。


好了,本篇文章分享到这里就结束了,希望对你们会有所帮助。

我用Python爬取了“b站弹幕大军,告诉你什么才是真正的“雨女无瓜”相关推荐

  1. Python爬取De下载站相关代码

    Python爬取De下载站相关代码,因为没有设置代理,所以爬到800页左右就被干掉了,后续要加上 import urllib.request import bs4 import re import t ...

  2. python爬取腾讯视频弹幕_用Python爬取腾讯视频弹幕

    原标题:用Python爬取腾讯视频弹幕 via:菜J学Python 1.网页分析 本文以爬取<脱口秀大会 第3季>最后一期视频弹幕为例,首先通过以下步骤找到存放弹幕的真实url. 通过删减 ...

  3. 用python爬取冰冰B站千条评论,我发现了这些...

    Python爬取 冰冰 第一条B站视频的千条评论,绘制词云图,看看大家说了什么吧 B站当日弹幕获取冰冰B站视频弹幕爬取原理解析 数据分析 import pandas as pd data = pd.r ...

  4. python爬取去哪里_详解Python 爬取13个旅游城市,告诉你五一大家最爱去哪玩?

    今年五一放了四天假,很多人不再只是选择周边游,因为时间充裕,选择了稍微远一点的景区,甚至出国游.各个景点成了人山人海,拥挤的人群,甚至去卫生间都要排队半天,那一刻我突然有点理解灭霸的行为了. 今天通过 ...

  5. 用Python爬取王冰冰vlog弹幕并制作词云

    大家好,最近的"瓜",多到我们措手不及,可谓是"热点不断".作为程序员,我们还可能随时为此而加班. 各种评论视频"爆炸"网络,打开首页全是热 ...

  6. 用python爬取下载b站视频

    B站之所以火,是因为趣味与知识并存.正如一句"你在B站看番,我在B站学习",B站还是有一些质量比较好的学习视频.当你在B站上看到喜欢的视频想保存下来时,怎么办呢? 转入正题,本篇推 ...

  7. Python 爬取 50,000 条数据,告诉你五一哪里没有人人人人!(内附折扣景点列表)...

    作者丨Alfred 责编 | 伍杏玲 五一去哪儿玩?相信有的同学已经为这个问题纠结了好久好久. 到底应该去哪个地方玩儿,哪里才能玩得尽兴?哪些城市哪些景点最火?各个省份都有哪些好评又热门的景点?哪些景 ...

  8. python爬取胡歌相关视频弹幕,分析并制作词云

    养成习惯,先赞后看!!! 目录 1.分析网页 2.爬虫+jieba分词+制作词云 2.1爬虫 2.2jieba分词 2.3制作词云 3.成品展示 4.完整代码 1.分析网页 视频地址:https:// ...

  9. python 爬取腾讯视频弹幕

    腾讯视频弹幕地址:http://mfm.video.qq.com/danmu?timestamp=0&target_id=xxxxx 1.在视频地址中获取target_id 2.通过视频cid ...

最新文章

  1. redis中文乱码问题
  2. Java正则表达式校验工具类_【Java工具类】----正则表达式校验工具类
  3. 计算Gaunt积分m1m2≥0
  4. [Python]网络爬虫(五):urllib2的使用细节与抓站技巧
  5. 一个web项目在myeclipse中add deployment时无法被识别出来的原因
  6. DDoS deflate–简单解决VPS被DDOS/CC攻击
  7. python tkinter画布位置_Python Tkinter坐标画布
  8. [题解]RQNOJ PID85 三个袋子
  9. dedecms怎么改php版本_玩转Termux:手把手教你在手机上安装php与nginx!
  10. 数据结构-树与二叉树
  11. LoadingCache源码剖析之缓存加载实现
  12. 孙鑫VC学习笔记:第十一讲 (一) 坐标空间与各种转换的概念
  13. 一文读懂《“十四五”软件和信息技术服务业发展规划》
  14. 用图片替代cursor光标样式
  15. 3.2.CPU中的实模式
  16. 怎么看计算机的网络ping值,Win7怎么查看ping值 win7测试ping值的方法
  17. mysql 时间相关问题
  18. java查找文件路径_如何查找java路径?
  19. 阿里云服务器CentOS部署Minio服务实现远程访问
  20. 【Docker】基础(二)

热门文章

  1. css鼠标移至滚动条变粗
  2. iOS UIButton之UIControlEvents介绍
  3. python 基础面试题
  4. 单一职责原则和接口隔离原则区别的理解
  5. android tranform
  6. Python对接微信小程序V3接口进行支付,并使用uwsgi+nginx+django进行https部署
  7. Flink中max和maxBy的区别及使用
  8. CentOS8 安装/测试 etcd
  9. 如何取得从1900年到现在的时间
  10. Phoenix OS网卡驱动_摆脱网线束缚,台式机安装无线网卡详细教程!