bilibili献给新一代的演讲《后浪》

前言
在进入本文之前,我很想给大家推荐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找对了。这样的弹幕数据不是我想要的,因为我还要生成词云,说以还是以代码来处理整个过程。我会解释相关的代码。
来看代码
下面展示一些 内联代码片

#流程
#导入工具
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 点击访问主页

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

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

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

  2. python3网络爬虫--爬取b站用户投稿视频信息(附源码)

    文章目录 一.准备工作 1.工具 二.思路 1.整体思路 2.爬虫思路 三.分析网页 1.分析数据加载方式 2.分词接口url 3.分析用户名(mid) 四.撰写爬虫 五.得到数据 六.总结 上次写了 ...

  3. 爬取qq音乐的评论并生成词云——以《听妈妈的话》为例

    爬取qq音乐的评论并生成词云 我们选取的是歌曲的周杰伦的 听妈妈的话 先看效果图 首先,我们进去qq音乐找到这首歌 网易云出来挨打 https://y.qq.com/n/yqq/song/002hXD ...

  4. python3网络爬虫--爬取b站视频评论用户信息(附源码)

    文章目录 一.准备工作 1.工具 二.思路 1.整体思路 2.爬虫思路 三.分析网页 1.分析网页加载方式 2.分析数据接口 3.获取oid 四.撰写爬虫 五.存储数据 六.总结 你爱我,我爱你,蜜雪 ...

  5. python爬取QQ空间好友说说并生成词云

    最近自己玩爬虫玩得很嗨.想到爬QQ空间主要是因为在看网课的时候有不少人刷弹幕要去爬前女友空间..咳咳,虽然我没有前女友,但是这不失为一个有趣的练手机会.(爬完之后发现不会留下访客记录!确实很适合爬前女 ...

  6. 爬取寻梦环游记的评论生成词云

    本文从豆瓣电影中爬取寻梦环游记的评论作为生成词云的文本数据,废话不多说,走起. 准备数据 由于豆瓣的爬虫监测是比较严格的,一旦发现爬虫就会被BAN,但是我们可以通过预先登陆获取Cookies结合sle ...

  7. python爬取陌生人的qq空间_Python爬取QQ空间好友说说并生成词云(超详细)

    前言 先看效果图: 思路 1.确认访问的URL 2.模拟登录你的QQ号 3.判断好友空间是否加了权限,切换到说说的frame,爬取当前页面数据,下拉滚动条,翻页继续获取 爬取的内容写入本地TXT文件中 ...

  8. python爬虫爬取豆瓣图书热评并生成图云

    共4个py文件,按照顺序运行即可绘制出图云,效果图在最后,参考b占up主"龙王山小青椒"[Python爬虫+本科毕业论文速成]豆瓣评论-我是余欢水-[数据抓取-情感分析-评分统计- ...

  9. 1] python 爬取微信好友个性签名,生成词云

    在Anaconda下完成,参考https://blog.csdn.net/zhonglixianyun/article/details/78229782 结果图: 1. 需要的库 numpy, os, ...

最新文章

  1. 对称密码算法Rijndael解析—加密
  2. C++ using namespace
  3. Ubuntu Wifipumpkin3 WiFi钓鱼工具,应该适用于绝大多数的Debian系的linux 发行版
  4. 为什么说Java中只有值传递(另一种角度)
  5. 必读:Java Java
  6. 【Qt调试技巧】Profile配置使用及一些坑
  7. flask manage port_nginx+uwsgi+python+flask环境搭建
  8. Java 获取两个日期之间的日期
  9. 计算机地图制图的点状符号制作,计算机地图制图地图符号库系统建立.doc
  10. 驱动精灵在服务器的系统安装,驱动精灵怎么安装打印机驱动?打印机驱动安装的方法...
  11. 悼念博客专家雷霄骅七律诗一首
  12. [jquery] 动画 show hide toggle,下拉显示---slideDown,淡入淡出----fadeIn, animate() ,停止动画---stop,finish
  13. 感谢ZhangYu dalao回关
  14. fatal: Incorrect username or password ( access token ) 鉴权失败
  15. 华为2018款MateBook X Pro实现多屏协同
  16. 三明治创业者档案12:吴皓的零号线
  17. 算法打卡Day16_leetcode _94. 二叉树的中序遍历
  18. oracle-表创建
  19. ecshop 数据库调试技巧 【强烈推荐】
  20. android短彩信相关

热门文章

  1. 网络 路由器基本协议配置
  2. 时间戳防止wms瓦片缓存
  3. 小米打印机显示服务器错误是怎么回事,小米打印机出现不再接受此打印加密是什么意思?...
  4. 你为什么学不好Python?
  5. 基于QT平台的手持媒体播放器项目实战视频教程下载
  6. GBase 8s灾备集群HAC (四) 异地灾备RSS
  7. 端口映射工具 – portmi
  8. FL中隐私和安全性问题
  9. 外边距塌陷原因和解决方式
  10. outguess 使用方法