hello大家好,我是你们的可爱丸,大家平时在B站看视频时有没有开弹幕的习惯呢?如果不把视频从头看到尾,那么多弹幕,我们怎么快速的知道大家都说了些什么并且持有什么观点呢?

今天小姐姐就教你做一个简单的B站弹幕爬虫,让你在没有观看视频的情况下就能预先知道大家都在弹幕里面评论了什么,并且什么是大家说的最多的词语。话不多说,现在我们就开始学习B站弹幕的python爬虫吧!
【效果预览】


【详细教程】
首先,我们需要确定想爬取的目标网页,因为最近罗翔老师说刑法的相关视频实在是太有意思了,所以这里可爱丸小姐姐选取了罗翔老师的最新视频:【罗翔】我们为什么要读书?进行弹幕分析,网址如下:https://www.bilibili.com/video/BV1BK411L7DJ

确定了要爬取的URL之后,我们需要点击右键进入检查模式,然后找到Network选项卡,再点击浏览器左上角的刷新按钮,接着一个个点击浏览左下角的数据查找弹幕信息存储的位置。经过一番查找,小姐姐发现弹幕信息原来储存在:list.so?oid=177974677这个位置。

接下来我们将list.so?oid=177974677这个数据点开,就可以看到如下的信息,原来我们所有的弹幕信息都存储在这个网页中,那么我们的要分析的URL地址就是:https://api.bilibili.com/x/v1/dm/list.so?oid=177974677啦。

接着我们编写如下代码并运行,就可以成功的将弹幕信息爬下来啦,是不是很简单呢?

#导入我们要用到的模块
import requests
import re#设置想要爬取的网页地址
url = 'https://api.bilibili.com/x/v1/dm/list.so?oid=177974677'
#设置请求头,让爬虫伪装成浏览器访问
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36'}def get_damu(url):response = requests.get(url, headers)response = response.content.decode('utf-8')#通过正则表达式获取两个<d>标签内包含的弹幕信息data = re.compile('<d.*?>(.*?)</d>')#对目标网页使用正则表达式,获取所有匹配的内容danmu = data.findall(response)#打印一下看看有没有成功获取到弹幕print(danmu)get_damu(url)


但是想要对弹幕进行数据分析还没有那么简单哦,我们需要对弹幕进行分词,也就是把句子分割为一个个词语,然后再用空格将每个词语连接起来,需要补充的代码如下:

danmu_word = jieba.lcut(" ".join(danmu))
#将分词结果再次用空格连接,并转化成制作词云需要的字符串形式
print(danmu_word)


虽然我们已经做好了分词处理,但是词云只能处理字符串形式的内容,所以这里我们需要再将处理好的分词转化为字符串形式,需要补充的代码如下:

#将分词结果再次用空格连接,并转化成制作词云需要的字符串形式
danmu_str = " ".join(danmu_word)
print(danmu_str)


弹幕数据处理成可以被词云使用的字符串数据之后,我们就可以使用词云模块对数据进行词云分析啦,代码如下:

# 微信公众号:chimuyhs 【可爱丸学python】 关注并回复:源码  即可获取源代码
# QQ学习交流群:983460742#导入我们要用到的模块
import requests
import re
import jieba
import wordcloud
#设置想要爬取的网页地址
url = 'https://api.bilibili.com/x/v1/dm/list.so?oid=177974677'
#设置请求头,让爬虫伪装成浏览器访问
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36'}def get_damu(url):response = requests.get(url, headers)response = response.content.decode('utf-8')#通过正则表达式获取两个<d>标签内包含的弹幕信息data = re.compile('<d.*?>(.*?)</d>')#对目标网页使用正则表达式,获取所有匹配的内容danmu = data.findall(response)#使用jieba模块的lcut()精确模式进行分词,并用空格连接词语danmu_word = jieba.lcut(" ".join(danmu))#将分词结果再次用空格连接,并转化成制作词云需要的字符串形式danmu_str = " ".join(danmu_word)#构造词云对象,字体为微软雅黑,背景颜色为白色w = wordcloud.WordCloud(font_path="msyh.ttc",background_color='white')#将处理好的分词弹幕加载到词云中w.generate(danmu_str)#将生成的词云保存为danmu.png图片w.to_file('danmu.png')if __name__ == '__main__':get_damu(url)

做好以上的处理之后,我们的词云图片就存储在和源代码同级的文件夹下啦,其中词语最大的就是在弹幕中出现次数最多的词语哦,从这个弹幕词云我们可以看出同学们说的最多的就是“谢谢老师”,看来我们的罗翔老师真的很受大家喜爱呢,给罗翔老师点赞!

如果大家觉得系统默认生成的词云图片太小的话,还可以对词云图片的长和宽进行设置哦,这样我们就可以得到自己想要的图片大小啦,设置方法如下:

#构造词云对象,字体为微软雅黑,背景颜色为白色
#设置宽度为1000高度为500,通过mask设置图片形状
w = wordcloud.WordCloud(font_path="msyh.ttc",background_color='white',width=1000,height=500)


如果你想生成更具特色的词云,还可以对词云的形状进行设置哦,这里可爱丸小姐姐想把词云设置成五角星的形状,所以就在网上找了一张五角星的图片,并通过修改mask,把五角星图片设置为词云的形状,代码如下:

# 微信公众号:chimuyhs 【可爱丸学python】 关注并回复:源码  即可获取源代码
# QQ学习交流群:983460742#导入我们要用到的模块
import requests
import re
import jieba
import wordcloud
import imageio
#选择同一个文件夹下的luoxiang.jpg图片
mask = imageio.imread('xing.jpg')#设置想要爬取的网页地址
url = 'https://api.bilibili.com/x/v1/dm/list.so?oid=177974677'
#设置请求头,让爬虫伪装成浏览器访问
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36'}def get_damu(url):response = requests.get(url, headers)response = response.content.decode('utf-8')#通过正则表达式获取两个<d>标签内包含的弹幕信息data = re.compile('<d.*?>(.*?)</d>')#对目标网页使用正则表达式,获取所有匹配的内容danmu = data.findall(response)#使用jieba模块的lcut()精确模式进行分词,并用空格连接词语danmu_word = jieba.lcut(" ".join(danmu))#将分词结果再次用空格连接,并转化成制作词云需要的字符串形式danmu_str = " ".join(danmu_word)#构造词云对象,字体为微软雅黑,背景颜色为白色#设置宽度为1000高度为500,通过mask设置图片形状w = wordcloud.WordCloud(font_path="msyh.ttc",background_color='white',width=1000,height=500,mask=mask)#将处理好的分词弹幕加载到词云中w.generate(danmu_str)#将生成的词云保存为danmu.png图片w.to_file('danmu.png')if __name__ == '__main__':get_damu(url)


怎么样,这样生成的词云是不是“美貌与智慧”并存呢?哈哈。

看到这里大家是不是以为本期的教程就要结束了呢?才没有呢!我们还差了最后一步哦。大家有没有发现,这样写的爬虫只能爬取设置好的默认视频弹幕,如果下次我们想要分析另一个视频的弹幕岂不是要把代码重新写一遍?这可不是我们聪明人的风格哦。所以我们要对这个爬虫增加一个可交互的功能,让他能够爬取任意我们想要爬取的B站视频,并且不用修改代码,方法如下:

# 微信公众号:chimuyhs 【可爱丸学python】 关注并回复:源码  即可获取源代码
# QQ学习交流群:983460742#导入我们要用到的模块
import requests
import re
import jieba
import wordcloud
import imageio
#选择同一个文件夹下的luoxiang.jpg图片
mask = imageio.imread('xing.jpg')#设置想要爬取的网页地址
url = 'https://api.bilibili.com/x/v1/dm/list.so?oid=177974677'
#设置请求头,让爬虫伪装成浏览器访问
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36'}def get_damu(url):response = requests.get(url, headers)response = response.content.decode('utf-8')#通过正则表达式获取两个<d>标签内包含的弹幕信息data = re.compile('<d.*?>(.*?)</d>')#对目标网页使用正则表达式,获取所有匹配的内容danmu = data.findall(response)#使用jieba模块的lcut()精确模式进行分词,并用空格连接词语danmu_word = jieba.lcut(" ".join(danmu))#将分词结果再次用空格连接,并转化成制作词云需要的字符串形式danmu_str = " ".join(danmu_word)#构造词云对象,字体为微软雅黑,背景颜色为白色#设置宽度为1000高度为500,通过mask设置图片形状w = wordcloud.WordCloud(font_path="msyh.ttc",background_color='white',width=1000,height=500,mask=mask)#将处理好的分词弹幕加载到词云中w.generate(danmu_str)#将生成的词云保存为danmu.png图片w.to_file('danmu.png')if __name__ == '__main__':s = input("输入要爬取的弹幕地址:")# 将用户输入的弹幕地址去掉空格并加载到get_danmu()中get_damu(s.strip())

将代码改进之后,我们就可以实现对任意视频的B站弹幕分析啦!是不是很棒呢?

好啦,本次的爬虫案例分享到这里就结束啦,如果你还想学习更多有关python的知识,记得关注我哦,我将持续与大家分享python自学之路上的学习干货!

如果你觉得本教程写得不错的话,记得给小姐姐评论以及点赞哦,你们的支持就是我坚持的动力!拜拜,我们下期再见!

爬虫数据云词图片怎么做?小姐姐教你用python做B站弹幕爬虫,并进行数据分析生成词云相关推荐

  1. python能做机器人吗_为了追到小姐姐,我用python做了一个机器人,初学者就能做!...

    目 标 场 景 最近发现有一个微信好友,我的每一条朋友圈动态,无论什么时候发布,发布的什么内容,点赞列表总有它的身影. 这不禁让我陷入一种沉思,是否我也能做一个机器人,第一个时间给暗恋的小姐姐朋友圈点 ...

  2. 手机python软件怎么下载词云_从零开始教你用 Python 做词云

    原标题:从零开始教你用 Python 做词云 雷锋网按:本文作者王树义,原载于微信公众号玉树芝兰(nkwangshuyi),雷锋网经授权发布. 临渊羡鱼,不如退而结网.我们步步为营,从头开始帮助你用P ...

  3. python代码示例图形-纯干货:手把手教你用Python做数据可视化(附代码)

    原标题:纯干货:手把手教你用Python做数据可视化(附代码) 导读:制作提供信息的可视化(有时称为绘图)是数据分析中的最重要任务之一.可视化可能是探索过程的一部分,例如,帮助识别异常值或所需的数据转 ...

  4. python画图代码大全-纯干货:手把手教你用Python做数据可视化(附代码)

    原标题:纯干货:手把手教你用Python做数据可视化(附代码) 导读:制作提供信息的可视化(有时称为绘图)是数据分析中的最重要任务之一.可视化可能是探索过程的一部分,例如,帮助识别异常值或所需的数据转 ...

  5. 12岁的少年教你用Python做小游戏

    首页 资讯 文章 频道 资源 小组 相亲 登录 注册 首页 最新文章 经典回顾 开发 设计 IT技术 职场 业界 极客 创业 访谈 在国外 - 导航条 -首页最新文章经典回顾开发- Web前端- Py ...

  6. 学python买什么书-Python爬虫入门看什么书好 小编教你学Python

    Python爬虫入门看什么书好 小编教你学Python 时间:2018-01-12     来源:Python爬虫入门讲解 生活在21世纪的互联网时代,各类技术的发展可谓是瞬息万变,这不今天编程界又出 ...

  7. 如何在原先的jqgrid中填充新的数据_自然人电子税务局(扣缴端)数据如何恢复?申税小微教您轻松搞定...

    自然人电子税务局 数据如何恢复? 申税小微教您轻松搞定! 财务小王:申税小微,我们公司换了新电脑,重新安装的自然人电子税务局(扣缴端)上没有人员采集信息和历史申报数据该怎么办? 申税小微: 1.可以在 ...

  8. python爬取《三国演义》小说统计词频生成词云图

    python爬取<三国演义>小说&统计词频&生成词云图 注意点: 爬取小说正文时用的正则表达式涉及到多行匹配.需要开启多行模式(?s) book_content_re = ...

  9. python模型预测_【超级干货!】教你用Python做回归模型预测房价

    原标题:[超级干货!]教你用Python做回归模型预测房价 欢迎关注天善智能 hellobi.com,我们是专注于商业智能BI,大数据,数据分析领域的垂直社区,学习.问答.求职,一站式搞定! 对商业智 ...

最新文章

  1. 递归与非递归转换(栈知识应用)
  2. 当自动驾驶汽车撞过来的时候,你希望它如何判断?
  3. 对git的使用日常问题及解决
  4. 【运维】linux硬盘空间不足,扩容硬盘,挂载目录,并永久挂载
  5. 对象运算符.和[]的用法
  6. mac p配置android开发,Mac 下配置Android 环境变量
  7. 千米网:未来,是一个一千米的梦想
  8. 香肠派对电脑版_6款好玩的吃鸡小游戏,和平精英、香肠派对、迷你攻势、、、...
  9. 产品研发流程与周期(非原创)
  10. 拓端tecdat:Python金融时间序列模型ARIMA 和GARCH 在股票市场预测应用
  11. 20行Python代码爬取王者荣耀全皮肤
  12. Power Integrations推出的全新CAPZero-3 X电容放电IC符合IEC60335标准
  13. java 爬取网页的数据_java爬取网页数据
  14. linux shell 脚本手动执行没问题,但在任务计划中执行有问题
  15. Ubuntu安装应用商店中没有的软件
  16. 九爷带你了解 nginx优化
  17. 珍惜人生路上的点点滴滴
  18. 动力学(dynamics)与动理学(kinetics)概念辨析
  19. python代码自动补全利器----Kite介绍安装使用教程
  20. wms地图绘制工具_WMS/WMTS

热门文章

  1. APIC -- 高级可编程中断控制器
  2. 关于DrawText的基准线纵坐标的计算
  3. Github每日精选(第24期):python的浏览器MechanicalSoup
  4. CCF 201409-1 相邻数对(Python100分)
  5. C#之Base64编码解码
  6. 2018传智黑马前端视频教程36期视频与源码完整版
  7. 《咸鱼分享》咸鱼在线TOP
  8. 使用VPS时的注意事项
  9. 开源免费,最好用的3大系统9大防火墙软件安利给你们
  10. 网页数据获取小技巧(小白)