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')1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162

我觉的代码很详细了,但是给大家在稍微说点就是为何要指定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博客协议。期待与大家共同进步。

近期有很多朋友通过私信咨询有关Python学习问题。为便于交流,点击蓝色自己加入讨论解答资源基地

网络爬虫爬取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. C#操作Excel,权限问题
  2. Delphi读取文本内容
  3. CodeForces - 1220D Alex and Julian(思维+数论)
  4. 微信小程序集成腾讯云 IM SDK
  5. 软件工程项目总结_复旦大学软件工程实验室来ASE实验室交流
  6. lnmp 清除mysql日志,军哥LNMP 如何关闭 Mysql 日志,并且删除 mysql-bin.0000*日志文件...
  7. ZooKeeper系列(三)
  8. 三句话教你买对房子!买到好房子的都祝福哥三年内赚两个亿!
  9. Sql Server 中常用的字符串函数
  10. 增强网络安全意识——如何5分钟破解校园网上网账号和密码
  11. Android零基础入门第18节:EditText的属性和使用方法
  12. Excel教程视频《Excel大神上分攻略》50个工作场景,从案例到实践
  13. 博士劝退文,写的真好!
  14. Java方法签名的定义
  15. 生产制造业订单管理软件如何做好订单变更管理?
  16. 1989旧金山地震:动物预测成功的非经典案例
  17. 工作之余可以赚钱的副业,这4个副业总有适合你的!
  18. Axure RP原型发布到公司服务器
  19. matlab实验——信号和噪声产生及其功率谱分析
  20. 美定制礼品电商Cafepress上市

热门文章

  1. 资产风险的分类及风险测度理论与方法
  2. (Dijkstra)算法--按路径长度递增序产生各顶点最短路径
  3. npm报错 npm ERR! Error while executing:
  4. 收藏 | 图像标注的基础内容介绍
  5. python在input输入回车12_语句x=input()执行时,如果从键盘输入12并按回车键,则x的值是( )。 (5.0分)_学小易找答案...
  6. ubuntu16.04 下鼠标变成十字形状无法点击情况解决
  7. day02 邮箱测试用例/qq账号测试用例/城市电话号用例
  8. 视线估计实战,卧槽,我有一个大胆的想法!
  9. AutoCAD线条加粗秘诀
  10. XJTU大学计算机基础第七周编程题