Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >网络爬虫爬取b站励志弹幕并生成词云(精心笔记总结)

网络爬虫爬取b站励志弹幕并生成词云(精心笔记总结)

作者头像
兰舟千帆
发布于 2022-07-16 04:25:15
发布于 2022-07-16 04:25:15
84100
代码可运行
举报
运行总次数:0
代码可运行

前言 在进入本文之前,我很想给大家推荐b站这个视频,3080.2万播放,27.9万条弹幕。这个视频之火不是因为漂亮的小姐姐,也不是什么很傻,很逗人发笑的视频,而是因为那满满的正能量,以及对于年轻人的激励,我们要活成我们的样子,我们是后浪,我们遇见这个时代,时代遇见今天的我们。

弱小的人才习惯嘲讽和否定,而内心强大的人从不吝啬赞美和鼓励!我们就是后浪,奔涌吧!后浪,奔涌吧!新一代!相信你们看了这个视频会内心波涛汹涌。在b站待了这么长时间,很荣幸可以看到这样的视频。

正文 1:我们今天的目标是爬取此视频的弹幕,并生成词云。一方面是为了做笔记,总结今天学到的,另一方面,我是为了分享经验,以及让大家看到这满是正能量的弹幕词云,足以冲击你的内心。 2:实现思路 我们主要用到以下几点知识

<1 爬虫技术     python库: requests , re, csv, jieba,imageio,wordcloud

<2分析网站: bill网站特定视频

<3查找数据来源的api: 弹幕数据来源的api 3:具体实现:

我们来打开billbill这个视频主页:

我们要拿到的是弹幕数据,我们可以指定某天的弹幕数据,当然通过爬虫,我们可以全部拿下,今天,我们随便指定日期,都是一样的道理。

既然是分析网站,自然是右键查看源码了。

这里面有数据,但不是我们的方向,我们可以清空数据。我们要拿到弹幕的api。那么,需要抓包。我们点击b站弹幕列表下面的查看历史弹幕。

看到上面那个日历没有,今天是2/17,那我就拿今天的弹幕。

下面进行抓包,我们清空network下面的所有,现在我们点击日历上的2/17,我们观察会出现什么。来看

不知道你有没有注意到这样一段 :

seg.so?type=1&oid=186803402&date=2021-02-17

我分析这个包,后面是一个日期格式的参数。那我一定会想到,只要我按照这样的格式,我可以指定任意一天。很可能这个就是我们要寻求的方向。我们点进去。来看

这里放大了了,希望能看到这个蓝色的一行。很熟悉的,是url,下面是请求相关的。我们点进去这个url。会发现是一个文件,这个文件并不是普通的文件。你可以下载,然后用notepad打开,指定格式utf-8编码后,会显示这样。

我们看到里面是有弹幕中文的,但是也有不认识的东西。这里至少可以证明我们的url找对了。这样的弹幕数据不是我想要的,因为我还要生成词云,说以还是以代码来处理整个过程。我会解释相关的代码。 来看代码 下面展示一些 内联代码片

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#流程
#导入工具
import requests #第三方工具
import re #正则
import csv #处理保存csv文件格式
import jieba #用来分词的国人开发的库 import wordcloud
import imageio # 读图片
import wordcloud #词云库

#目标网站
url = ' https://api.bilibili.com/x/v2/dm/web/history/seg.so?type=1&oid=186803402&date=2021-02-17'
#模拟浏览器发送请求,接受返回的数据
headers = {
    # 用户代理 身份证
    'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36',
    # 账号已登录信息
     'cookie': '_uuid=DB17FC3E-C33B-0402-FEC8-6D5F54FFD75826400infoc; buvid3=524A488F-FA38-4505-A9FD-80539B19E3FB184978infoc; sid=a2zoyf7s; buvid_fp=524A488F-FA38-4505-A9FD-80539B19E3FB184978infoc; DedeUserID=650586683; DedeUserID__ckMd5=673346effe04fe44; SESSDATA=dc4b2c16%2C1628474903%2Cc95da*21; bili_jct=f92980128fe4681476212c6cfe3d0ff7; CURRENT_FNVAL=80; blackside_state=1; rpdid=|(J|)JR|||Rm0J uYukmkkmJk; fingerprint3=dc6c77bb0dfdccdd39bc9efbb780630d; fingerprint=f29725bb59f7984374f945e2ebddc362; buvid_fp_plain=524A488F-FA38-4505-A9FD-80539B19E3FB184978infoc; fingerprint_s=0a7abb581b9ea03451e614a51a3d4b2b; LIVE_BUVID=AUTO8416133069733130; bp_video_offset_650586683=491829482594004200; bsource=search_baidu; PVID=1; bfe_id=1e33d9ad1cb29251013800c68af42315'
}
resp = requests.get(url,headers=headers)
print(resp) # 打印输出一下看是否可以正常访问
print(resp.text)#以文本的形式打印网页源代码
# 获取弹幕数据
#中文
Danmu = re.findall("[\u4e00-\u9fa5]+",resp.text) # 用到的正则,匹配中文
print(Danmu)
# 4.数据保存
for i in Danmu : #相当于一个遍历保存
    with open('B站弹幕.csv','a',newline='',encoding='utf-8') as f :
        writer = csv.writer(f) #这里可以理解为传入文件句柄
        #文件句柄可以帮助我们找到该文件,作用是这个。
        danmu = []
        danmu.append(i)
        writer.writerow(danmu)
# 绘制词云
f = open('B站弹幕.csv','r',encoding='utf-8')
txt = f.read()
#print(txt)

# 1.分词处理
textlist = jieba.lcut(txt)
print(textlist)
string1 = ' '.join(textlist) #拼接成整个字符串
#print(string)
mk = imageio.imread(r'心.jpg')
w=wordcloud.WordCloud(
    width = 1000,
    height =700,
    background_color ='white',
    font_path='msyh.ttc',
    mask =mk,
    scale = 18,
    stopwords = {'','\n','\r'},#停用词
    contour_width =5,
    contour_color ='red'

)
# 将string变量传入w的generate()方法,给词云输入文字
w.generate(string1)
#将词云图片导出到当前文件夹
w.to_file('out1.png')

我觉的代码很详细了,但是给大家在稍微说点就是为何要指定user-agent,以及cookie。 指定user-agent是为了模拟浏览器访问,否则网站会认为你是爬虫,是写程序去访问的,可能会被卡擦掉。当然还有指定高级的线程池什么的,在这里是没必要的。cookie,保存了你登陆网站的信息,很像一个身份证,如果你不指定cookie,那么网站会提示你登录的。可以把他理解为身份信息,当你访问网站时,网站就给你存一个cookie。 这里面有一个jieba库,是我们国人开发的,有点自豪。是用来分词的,具体可以去查阅文档理解相关的源码和方法。

re库是导入用来写正则语法的库,是用来匹配的。规则很简单,但是东西比较多哦。当然我们也可以直接去网站查看规则。很多匹配的语法规则都有。csv是一种文件格式,也可以去查看库理解,并不是难事。词云时,需要读取csv格式文件

代码中wordcloud中的参数mk代表指定根据的图片绘制词云,这里要求图片背景尽量为白色,里面可以有你想要的形状。更详细的请查看资料了解相关的方法。

还有就是关于with open()这部分代码中的newline参数, 当在读取模式下,如果新行符为None,那么就作为通用换行符模式工作,意思就是说当遇到\n,\r或\r\n都可以作为换行标识,并且统一转换为\n作为文本输入的换行符。当设置为空’’时,也是通用换行符模式工作,但不作转换为\n,输入什么样的,就保持原样全输入。当设置为其它相应字符时,就会判断到相应的字符作为换行符,并保持原样输入到文本。 当在输出模式时,如果新行符为None,那么所有输出文本都是采用\n作为换行符。如果设置为’’或者\n时,不作任何的替换动作。如果是其它字符,会在字符后面添加\n作为换行符。所以这个参数的设置非常重要。

还有一个方法就是’ ‘.join(),代表以’ '拼接字符串。比如 string2 = ‘,’.join(‘abcd’) 那么会输出a,b,c,d。就是这样的意思。

我们来看代码的实现结果,这里有我的几个词云,好与不好,都与图片的选择有关,简单展示一下。

执行完这段代码后,控制台可能会打印你不需要的信息,注释掉即可,那是我测试用的。还有就是不要看到控制台打印出红色字体就认为出错了。你得知道他在说啥。像下面是没有错误的。

就写到这里了,相关的请遵守csdn博客协议。期待与大家共同进步。

------jgdabc 点击访问主页

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-02-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
分析B站弹幕,川普同志暴露的那一天,没有一个鬼畜up是无辜的
B站作为一个弹幕视频网站,有着所谓的弹幕文化,那么接下来我们看看,一个视频中出现最多的弹幕是什么?
松鼠爱吃饼干
2020/09/15
4920
分析B站弹幕,川普同志暴露的那一天,没有一个鬼畜up是无辜的
爬取B站18000条《黑神话:悟空》实机演示弹幕,做成词云
从不畏惧死亡,只是不忍世道沦丧。哪怕前途多尸骨,身后无退路—— 这个世界,总有勇敢的生命,再次踏上取经之途。由游戏科学开发的西游题材单机·动作·角色扮演游戏《黑神话:悟空》今日正式公布长达13分钟的实机演示视频!本视频内容全部基于实际操作录制,将最真实的游戏体验一刀不剪地呈现给玩家。白骨之后,重走西游。那群最想做西游的人,真的回来了。更多信息可关注我们的微博@黑神话之悟空 或前往官网>>heishenhua.com
松鼠爱吃饼干
2020/09/15
5750
爬取B站18000条《黑神话:悟空》实机演示弹幕,做成词云
python爬取B站视频弹幕分析并制作词云
视频地址:https://www.bilibili.com/video/BV19E411W7BE 本身博主同时也是一名up主,虽然已经断更好久了,但是不妨碍我爬取弹幕信息来分析呀。 这次我选取的是自己唯一的爆款视频。就是下面这个。
萌萌哒的瓤瓤
2020/08/26
1.6K0
python爬取B站视频弹幕分析并制作词云
Python爬取B站耗子尾汁、不讲武德出处的视频弹幕
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。
松鼠爱吃饼干
2020/11/19
7230
Python爬取B站耗子尾汁、不讲武德出处的视频弹幕
python苦短-灵笼说啥
《灵笼》艺画开天生产,B站独播,国漫里面制作算是精良,但是剧情有太多瑕疵。评论两极分化,好的说非常好,差的说非常差。看看弹幕说的啥吧
火星娃统计
2020/09/15
5070
python苦短-灵笼说啥
Python爬虫 爬取B站视频弹幕 + 绘制词云
视频链接:https://www.bilibili.com/video/BV1zE411Y7JY
叶庭云
2020/09/17
3.5K0
Python爬虫    爬取B站视频弹幕 + 绘制词云
利用Python做一个漂亮小姐姐词云跳舞视频
B站上的漂亮的小姐姐真的好多好多,利用 you-get 大法下载了一个 B 站上跳舞的小姐姐视频,利用视频中的弹幕来制作一个漂亮小姐姐词云跳舞视频,一起来看看吧。
叶庭云
2021/02/02
1K0
用Python爬取王冰冰vlog弹幕并制作词云
各种评论视频“爆炸”网络,打开首页全是热点话题的内容,某知名UP主发布视频都要错下峰。
朱小五
2021/02/05
3990
写了个爬虫,收集了b站所有的弹幕
这两天王力宏的瓜可谓是闹的沸沸扬扬,不怎么吃瓜的我也听了不少传闻。网上观点主要分为两派,一种无脑直接喷的,一种是说人品和艺术无关的。而我也想看看大家对他都什么看法,因此写了个爬虫爬了一下b站视频的弹幕。
godweiyang
2021/12/21
1.5K0
写了个爬虫,收集了b站所有的弹幕
用Python爬取b站弹幕,看大家还会接受《爱情公寓5》吗?
为什么选择B站呢? 著名UP主“残狼之卑”,曾经在b站上传了几十个对比视频,做成《爱情公寓的抄袭史》,每期视频播放量都几十万,所以按理来说B站的用户反对爱情公寓的人应该很多。 如果B站的用户都可以接受,那么《爱5》可能真的会取得不错的播放量。 B站的弹幕数据是有接口的,比如说: https://comment.bilibili.com/********.xml 它以一个固定的url地址+视频的cid+.xml组成。只要找到你想要的视频cid,替换这个url就可以爬取所有弹幕了。 以刚才的视频为例
数据森麟
2019/10/23
6500
用Python爬取b站弹幕,看大家还会接受《爱情公寓5》吗?
用Python爬取b站弹幕,看大家还会接受《爱情公寓5》吗?
尽管抄袭傍身,也没能阻挡《爱情公寓5》进击的脚步。 最近爱情公寓电视剧微博发布了长达8分钟的揭幕视频,官宣新季将在2020正式开播。 几位主演纷纷转发宣传,将#爱情公寓5揭幕#的话题送上了热搜。 观众在经历过一次《爱情公墓》的诈骗后,能否接受《爱情公寓5》(下文简称爱5)? 让我们来分析一下。 获取数据 首先,我选取了在B站上最热的视频,目前已经179万播放量,2万弹幕。
朱小五
2019/11/28
5560
Python实现跳词云舞
新建一个人像分割的实例,新注册用户可免费领取资源,官网地址:https://cloud.baidu.com/product/body/seg。下面是小编申请的一个实例:
皮大大
2023/08/25
3380
爬取B站20万+条弹幕,我学会了如何成为B站老司机
B站(哔哩哔哩)是国内知名的视频弹幕网站,也是中国最大的年轻人聚集地之一,想要知道B站弹幕爱刷什么梗?不同分区UP主弹幕各有什么特点?如何快速成为B站弹幕老司机?本文就通过Python爬取B站不同UP主近20万+弹幕数据进行分析,全文共分为两个部分,第一部分为不同分区up主的弹幕分析,第二部分为Python爬取B站弹幕技术分析。
刘早起
2020/08/04
1.5K1
爬取B站20万+条弹幕,我学会了如何成为B站老司机
【Python爬虫】15行代码教你爬B站视频弹幕,词云图展示数据(附源码)
知识点 爬虫基本流程 正则 requests >>> pip install requests jieba >>> pip install jieba imageio >>> pip install imageio wordcloud >>> pip install wordcloud 开发环境 add path 勾选 其他可以默认安装 Python越新的版本 代表的一些模块不太兼容 Python 3.6 / 3.8 >>> python解释器(环境) Pycharm >>> python编辑器 代码实现过
松鼠爱吃饼干
2021/10/14
1.3K0
手把手带你B站少量弹幕爬取并生成词云
其中requests和bs4以及re是爬虫的主力军,而numpy、Image、jieba、wordcloud就是生成词云要用到的东西。pandas是便于格式化来输出文件是。
Regan Yue
2021/12/01
1.6K0
「Python爬虫系列讲解」十四、基于开发者工具 Network 的数据抓包技术
前文回顾: 「Python爬虫系列讲解」一、网络数据爬取概述 「Python爬虫系列讲解」二、Python知识初学 「Python爬虫系列讲解」三、正则表达式爬虫之牛刀小试 「Python爬虫系列讲解」四、BeautifulSoup 技术 「Python爬虫系列讲解」五、用 BeautifulSoup 爬取电影信息 「Python爬虫系列讲解」六、Python 数据库知识 「Python爬虫系列讲解」七、基于数据库存储的 BeautifulSoup 招聘爬取 「Python爬虫系列讲解」八、Selenium 技术 「Python爬虫系列讲解」九、用 Selenium 爬取在线百科知识 「Python爬虫系列讲解」十、基于数据库存储的 Selenium 博客爬虫 「Python爬虫系列讲解」十一、基于登录分析的 Selenium 微博爬虫 「Python爬虫系列讲解」十二、基于图片爬取的 Selenium 爬虫 「Python爬虫系列讲解」十三、用 Scrapy 技术爬取网络数据
荣仔_最靓的仔
2021/02/02
2.3K0
「Python爬虫系列讲解」十四、基于开发者工具 Network 的数据抓包技术
综艺节目《哈哈哈哈哈》最近有点火,教你爬取他的弹幕并绘制词云图,看看为什么这么火
不知道大家看视频有没有看弹幕的习惯,弹幕在一定的程度上反映了观众对视频的看法。通过分析弹幕,我们可以快速直观的知道观众对视频的看法。
Python与Excel之交
2021/08/05
6430
Python爬虫抓取Bilibili弹幕并生成词云
Bilibili(B站)是国内知名的视频分享平台,拥有海量的弹幕数据。弹幕是B站的核心特色之一,用户通过弹幕进行实时互动,这些数据对于分析视频热度、用户情感倾向等具有重要价值。
小白学大数据
2025/05/10
2340
Python爬虫抓取Bilibili弹幕并生成词云
正则表达式心中有,还愁爬虫之路不好走?
首先我们理解两个概念: ①爬虫:说白了,爬虫就是能够按照制定规则自动浏览网络信息的程序,并且能够存储我们需要的信息。 ②正则表达式:简单而言,就是对字符串过滤用的; 具体而言,就是对字符串的一种逻辑公式,即用事先定义好的特定字符,以及这些字符的组合,组合成一个“规则字符串”,并用这个“规则字符串”表达对字符串的过滤。
荣仔_最靓的仔
2021/02/02
9440
正则表达式心中有,还愁爬虫之路不好走?
最新的B站弹幕和评论爬虫,你们要的冰冰来啦!
最近想爬下B站的弹幕和评论,发现网上找到的教程基本都失效了,毕竟爬虫和反爬是属于魔高一尺、道高一丈的双方,程序员小哥哥们在网络的两端斗智斗勇,也是精彩纷呈。
周萝卜
2021/10/13
9120
推荐阅读
相关推荐
分析B站弹幕,川普同志暴露的那一天,没有一个鬼畜up是无辜的
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验