Python爬取bilibili弹幕并生成词云

目标网站:
我这里以 TES vs SN 第四场决胜局为例:

探索经历:

很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!??¤
QQ群:623406465

首先我们要找到我们想要爬取的弹幕都发在哪:
我们先播放这个视频,随便记住一条弹幕,到审查元素里面搜索

哎,可以找到,然后我们再查看一下网页的源代码,没有搜索结果。。。。。。这说明bilibili的弹幕是动态加载的,是js请求的数据,可能是json,也可能是XML

通常我们都会通过翻页等操作让网页进行js请求,我们在“后台”盯着,看有没有多出来的文件,依次翻看一下里面的东西,看看有没有存放弹幕的文件,于是我继续播放视频,列表里也确实多了很多文件

但很可惜并没有找到我想要的存储弹幕的文件

我觉得播放视频还是没能请求到弹幕文件,于是我找到了第二种方法:(需要先登陆一下)

如图,切换不同的日期可以找到我们想要的存储弹幕文件,是个XML文件:

这样,我们就找到了目标url,复制url打开就是我们想要的弹幕页面

同样,我们也找到了规律这里有两个可以更换的参数:
(1)oid:这个就是视频的id(这个可不太好找)

(2)date:这个很明显是日期

真正目标:

传送门:https://api.bilibili.com/x/v1/dm/list.so?oid=249509876&date2020-10-26

思路与方法:

(1)这个XML文件也是标签语言,用BeautifulSoup可以轻松爬取,存储到本地txt文件中
(2)利用jieba库对txt内容进行分词,再合并成一个空格分割的字符串(用于Wordcloud参数)
(3)使用Wordcloud生成词云并保存到本地

部分细节讲解:

弹幕标点符号和空格的去除:

这个是老生常谈了,我之前有一篇博客也说过:
SimHei字体:https://www.uslogger.com/details/3

完整代码:

import requests
import re
import os
from bs4 import BeautifulSoup
import jieba
from wordcloud import WordClouddef getHTMLText(url):try:kv = {"user-agent":"Mozilla/5.0"}r = requests.get(url,headers = kv)r.raise_for_status()r.encoding = r.apparent_encodingreturn r.textexcept:print("getHTMLText失败!")return ""def fillbarrages(url,path_txt):html = getHTMLText(url)soup = BeautifulSoup(html,'html.parser')with open(path_txt,'a',encoding='utf-8') as f:for d in soup.find_all("d"):# 使用正则表达式去除空格和标点,\W 表示匹配非数字字母下划线barrage = re.sub('\W+','',d.text)f.write(barrage)f.close()def getWordCloud(path_txt,path_jpg):barrages_cut = jieba.lcut(open(path_txt,'r',encoding='utf-8').read())   #jieba分词barrages = " ".join(barrages_cut)       #回拼成字符串并用空格分割wc= WordCloud(font_path=r"F:\Fonts\SimHei.ttf",background_color="skyblue",max_words=100,width=1080,height=720)wc.generate(barrages)wc.to_file(path_jpg)
def main():url = "https://api.bilibili.com/x/v1/dm/list.so?oid=249509876&date2020-10-26"path_txt = "TESvsSN第四场.txt"path_jpg = "TESvsSN第四场.jpg"fillbarrages(url,path_txt)print("fillbarrages成功")getWordCloud(path_txt,path_jpg)print("getwordcloud成功")main()

词云展示:

Python爬虫教程,采集bilibili弹幕并生成词云相关推荐

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

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

  2. python应用学习(四)——wordcloud生成词云

    python应用学习(四)--wordcloud生成词云 前言 一.准备 二.导入库 三.基本功能实现 四.爬取书评并制作词云 最后 前言 朋友最近在公众号发一些好书好剧推荐,然后我想着帮帮忙,做一个 ...

  3. python爬取bilibili弹幕_python爬虫:bilibili弹幕爬取+词云生成

    如果你懒得看下边的文字,我录了一个完整的教学视频在b站上. 我的B站教学:https://www.bilibili.com/video/av75377135?p=2 工作原理 b站是提供弹幕接口的,所 ...

  4. bilibili怎么设置弹幕数量_python爬虫:bilibili弹幕爬取+词云生成

    如果你懒得看下边的文字,我录了一个完整的教学视频在b站上. 我的B站教学:https://www.bilibili.com/video/av75377135?p=2 工作原理 b站是提供弹幕接口的,所 ...

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

    bilibili献给新一代的演讲<后浪> 前言 在进入本文之前,我很想给大家推荐b站这个视频,3080.2万播放,27.9万条弹幕.这个视频之火不是因为漂亮的小姐姐,也不是什么很傻,很逗人 ...

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

    bilibili献给新一代的演讲<后浪> 此文转载文,著作权归作者所有,如有侵权联系小编删除! 前言 在进入本文之前,我很想给大家推荐b站这个视频,3080.2万播放,27.9万条弹幕.这 ...

  7. Python 爬取B站视频信息 弹幕信息 生成词云统计

    本文介绍功能:实现爬取B站视频信息(用户输入关键词).爬取弹幕信息(支持自定义天数).生成词云图 完整代码地址:https://github.com/736755244/py_bilibili 一.数 ...

  8. 【Python】获取视频弹幕并生成词云

    目录 一.摘要 二.获取目标视频cid 三.获取视频弹幕xml文件 四.处理弹幕文件 五.生成词云 六.完整参考代码 一.摘要 就是那个大家都用的弹幕视频网站,不写名字了,写了老是不能通过. 获取视频 ...

  9. qq动态名片代码_利用Python动态爬取QQ说说并生成词云,分析朋友状况!

    今天我们要做的事情是使用动态爬虫来爬取QQ空间的说说,并把这些内容存在txt中,然后读取出来生成云图,这样可以清晰的看出朋友的状况. 这是好友的QQ空间10年说说内容,基本有一个大致的印象了. 爬取动 ...

  10. python snownlp情感分析_SnowNLP情感分析+生成词云

    本帖最后由 missy 于 2017-12-9 00:12 编辑 因为最近看了一下<致我们单纯的小美好>,虽然情节是有点"二"吧,但是看了觉得真的很怀念初高中的日子,一 ...

最新文章

  1. PhoneGap揭开你的神秘面纱
  2. solr调用lucene底层实现倒排索引源码解析
  3. linux PHP ppt 转图片,linux下用php将doc、ppt转图片
  4. 看了这个高并发系统架构,才知道我对秒杀的误解有多深
  5. U盘里的文件夹会以应用程序的方式出现解决
  6. python入门教程傻瓜版_毫无基础的人如何入门 Python ?Python入门教程拿走不谢啦!...
  7. Service Mesh 如何重定义云原生计算?阿里服务网格技术大揭秘
  8. iOS汉字转拼音,日韩文字转拼音
  9. windows本地运行sentinel
  10. Codeforces Round #352 (Div. 1) B. Robin Hood
  11. 屏蔽键盘信息(低级键盘钩子)
  12. Java设计模式——GoF设计模式
  13. [转]我的世界观(一)
  14. HDC.Cloud Day | 全国首场上海站告捷,聚开发者力量造梦、探梦、筑梦
  15. C++之 最大公约数求法
  16. 内外兼修:Oracle ACED熊军谈Oracle学习
  17. Macbook Pro 外接显卡实现Tensorflow GPU运行之内屏输出
  18. iis 网站添加 身份验证_在10分钟内将身份验证添加到任何网页
  19. 幸运与不幸-一起来编个有趣的故事
  20. 跨平台长连接组件设计及可插拔改造

热门文章

  1. python概率分布拟合_用Python实现概率分布
  2. Python爬虫:无账号无限制获取企查查信息
  3. 020_linux驱动之_输入子系统按键应用
  4. win7如何设置wifi热点_mac如何共享网络?mac怎么建立wifi热点?
  5. flutter全局状态管理Provider
  6. 关于VMD相关介绍(一)
  7. windows10任务栏一直转圈-无法操作假死状态
  8. Java微信支付开发之查询订单
  9. 《东周列国志》第八十七回 说秦君卫鞅变法 辞鬼谷孙膑下山
  10. luogu 2411 白银莲花池 luogu 1606 Lilypad Pond