一、爬取前期准备工作
二、爬取目标
三、爬取过程(重点)
四、生成可视化图表
五、全部代码
1.安装selenium模块及其相关驱动
安装selenium模块(以PyCharm为例)
方法一:打开PyCharm,依次点击 “文件”--->“设置”--->“python解释器”--->选择适合的环境(环境可以自己新建,也可以使用基础环境,不过建议新建一个)--->“加号”进入如下页面,
输入“selenium”,选择版本为“3.141.0”(这里一定要使用这个版本或者附近的版本,不要用最新的版本,最新的版本有些老的指令被废掉了,使用起来不方便,用这个版本就行了)
方法二:打开命令行,进入自己指定的环境或者基础环境,输入“pip install selenium==3.141.0”,一样也可以下载selenium模块。
2.安装chrome以及chromedriver(以chrome为例,firefox等等参考其他教程吧,这里我只用了chrome)
chrome可以随便百度搜索安装一下,但是要注意版本问题,最好使用114版本一下的,因为chromedriver的目前版本114以上的不好用,很少,chromedriver版本要和chrome版本对应,不然运行的时候会报错。
我使用的是109版本的chrome
下载链接:Chromev109.0.5414.120下载-Chrome2023最新版下载_3DM软件
安装完成后大多数人会遇到一个问题------chrome会自动升级,它会自动升级到116版本甚至116版本以上,这个时候就需要我们手动设置来阻止chrome自动升级。
如何阻止chrome自动升级呢:
在下载完chrome后,先别急着打开chrome。一般下载完chrome后桌面会自动创建快捷方式,右键点击快捷方式,然后点击“打开文件所在位置”,进入程序所在根目录
之后,按照操作,选择>>>Google目录
选择>>>Update
右键>>>属性
安全>>>SYSTEM>>>编辑
全部勾选拒绝
继续选择>>>高级
最重要的一步:
首先点击禁用继承
然后将所有类型为允许的条目删除
最后检查一下是否成功,点击Update文件夹,发现无权访问,那么就差不多成功了!
打开Chrome,点击右上角的设置>>>帮助>>>关于Google Chrome,发现检查更新报错,那么就成功了。
接下来我们安装chromedriver,这个东西可以帮助我们运行爬虫代码,实时测试网页。
安装地址:
CNPM Binaries Mirror
ChromeDriver - WebDriver for Chrome - Downloads
Download older versions of Google Chrome for Windows, Linux and Mac
注意:你的chrome浏览器是什么版本的,那你下载的这个chromedriver也要对应
我下载的chrome是109.0.5414.120
那么下载的chromedriver也要对应,不一定要完全一样,选最接近的版本就行了。
下载好之后将我们的chromedriver放到和我们python安装路径相同的目录下
其实这个时候差不多已经可以正常运行了,但有些人可能运行不了,可能是对应的环境变量没有添加(如果你把python安装目录已经添加到环境变量里面就应该没问题,有问题可能是没有完全添加进去,导致这个chromedriver系统识别不到)
打开我们的查看高级系统设置,点击环境变量,打开系统变量里面的path环境。添加我们的驱动路径进去。
完成之后我们可以打开PyCharm运行一段代码:
如果成功跳出chrome浏览器并显示已经到b站主页,那么安装就算完成了!
我们要爬取什么数据,并且该利用这些数据制作什么图表。这应该是我们要最先明确的,有了目标才能事半功倍。
我们小组在进行爬取信息决策时,想出了以下5条爬取目标:
1.bilibili热门榜top100视频相关数据的爬取
需要爬取内容: 当前榜单top100视频的标题,up主,观看量,弹幕数, 点赞数,投币数,收藏数,转发数。
分析点: 比较观看量,弹幕数, 点赞数,投币数,收藏数,转发数的差异。
2.bilibili热歌排行榜数据爬取
需要爬取内容: 各个种类歌曲排行榜,MV排行榜。
分析点: 统计各个种类歌曲的播放量,得出b站用户最爱哪种类型的歌曲。
3.bilibili美食区视频标签的数据爬取
需要爬取内容: 视频标题,各个视频的相关标签。
分析点: 分析标签词条出现频次,分析当前最热标签词条。
4.单一视频的评论数据爬取
需要爬取内容: 选择一个内容新颖的视频,爬取其评论信息
分析点: 分析各个评论传达出的情感态度,进行情感态度词条的统计,分析出该视频内容的好坏。
5.单一视频一周内各个参数数据的爬取
需要爬取内容: 该视频一周内的观看量, 弹幕数, 点赞数, 投币数, 收藏数, 转发数。
分析点: 分析该视频一周内各个数据的变化,推断出该视频的热度以及受欢迎度。
有了目标后,我们就可以开始干活了!
1.bilibili热门榜top100视频相关数据的爬取
由于这个top100榜单肯定是实时变化的,所以我们的这个榜单肯定不一样,但是爬取的过程是一样的,只是爬取下来的数据不一样。
这是我写这篇文章时的榜单
接下来是爬取过程:
先说一下我的爬取过程思考:
第一步:先将这个总页面中的100个视频的url(链接)都爬取下来,写入一个文件url.csv里面
第二部:循环读取url.csv文件里面的100个url(链接),进入每个视频的页面,然后将每个视频的具体信息爬取下来,写入一个文件top100.csv里面。
这样视频的相关信息就被我顺利爬取下来了(其实也可以直接在读取到每个视频url时就进入每个视频页面直接爬取信息,这就省略了第一步。但是当时我没有考虑这个,坚持一步一步来,所以这里就分享这个稍微麻烦一点的方法)
1.直接给出代码,下面这个是爬取top100所有视频链接的代码。
要注意的是:在爬取的过程中,需要我们实时加载页面,因为页面如果不加载,数据就无法被系统检测到,会导致程序卡死,这个时候我们大概率只能重新来过,如果你看懂了代码,稍微修改一下就能够实现在对应的地方继续爬虫或者重复爬虫。
爬取下来的数据差不多是这样的(这里只展示了前一部分,一共应该有100行)----第一列是url,第二列是up主名字,其实只需要第一列,第二列没啥用。
欧克!现在我们第一步就算完成了
2.直接给出代码,这里是根据上面我们爬下来的url(链接)循环爬取每个视频的相关信息
到这里所有得视频信息就都被我们爬取下来了,可以检查一下爬取的数据集,下面是我爬取的部分数据。
3.下面是完整代码,可以直接复制使用,爬取的是b站热门榜top100视频的相关链接与具体数据,代码会生成两个csv文件-------第一个是top100_url.csv,存储100个视频的链接;第二个是top100_details.csv,存储100个视频的具体参数及数据。(包括 1.视频标题 2.up主 3.观看量 4.弹幕数 5.点赞数 6.投币数 7.收藏数 8.转发数)(数据是粗数据,只能精确到万位,对于大作业来说应该到这里就差不多了)
欧克欧克!到这里所有的数据就爬取完成了,第一个目标就算完成了,看到这里,你应该差不多了解这个爬虫的具体过程(上面的注释详细看看)
如果你不了解的话,可以找我问问,看到了问题私信的话我会回的😊
接下来直接放代码
bilibili热歌排行榜数据爬取
注意:这个代码不要直接点运行,推荐使用“调试”,因为程序运行很快,我们来不及加载页面。
这个代码爬取的是音乐区---->最热 里面的“全部曲风”的每一个曲风的前5页的所有视频的播放量
爬取下来又整理之后的数据集差不多是这样的(数据全部都是播放量)(部分)
那么,第二个爬取目标也就完成了
bilibili美食区视频标签的数据爬取
这个代码爬取的是美食专区各栏目下视频的标签
这个代码也不能直接运行,需要调试,不会私信我,也可以自己试试看。
爬取的数据集(部分)
单一视频的评论数据爬取
这个代码是爬取某个视频的相关评论(视频自己选),将url替换一下就可以了
在爬取时需要不断加载评论,不然代码就立刻停止了,卡在未刷新的地方。
爬取的数据集(部分)
单一视频一周内各个参数数据的爬取
这个和第一个差不多,直接爬取了一个指定的视频的所有视频,直接输入url。
但是后面这个要做数据可视化,我们在一周内的每一天都要运行一次这个代码,这样一周之后就会有七组数据。
到此为止,数据的爬取工作就基本完成了。
爬取完数据后,接下来最后一步就是根据数据生成可视化图表了
制作图表最常用的是pyecharts模块和matplotlib模块。这里我使用的是pyecharts模块,也没有做的很豪华,只是大概的生成图表。
回顾一下我们的目标:
1.bilibili热门榜top100视频相关数据的爬取
需要爬取内容: 当前榜单top100视频的标题,up主,观看量,弹幕数, 点赞数,投币数,收藏数,转发数。
分析点: 比较观看量,弹幕数, 点赞数,投币数,收藏数,转发数的差异。
2.bilibili热歌排行榜数据爬取
需要爬取内容: 各个种类歌曲排行榜,MV排行榜。
分析点: 统计各个种类歌曲的播放量,得出b站用户最爱哪种类型的歌曲。
3.bilibili美食区视频标签的数据爬取
需要爬取内容: 视频标题,各个视频的相关标签。
分析点: 分析标签词条出现频次,分析当前最热标签词条。
4.单一视频的评论数据爬取
需要爬取内容: 选择一个内容新颖的视频,爬取其评论信息
分析点: 分析各个评论传达出的情感态度,进行情感态度词条的统计,分析出该视频内容的好坏。
5.单一视频一周内各个参数数据的爬取
需要爬取内容: 该视频一周内的观看量, 弹幕数, 点赞数, 投币数, 收藏数, 转发数。
分析点: 分析该视频一周内各个数据的变化,推断出该视频的热度以及受欢迎度。
欧克!现在让我们开始制作图表!
1.bilibili热门榜top100视频相关数据(柱状图)
代码运行需要个7s~8s左右,主要是make_snapshot()运行时间长。
代码会生成一个html文件和一个png图片
图片参考如下:
接下来直接放代码
bilibili热歌排行榜数据 (漏斗图)
参考如下:
bilibili美食区视频标签的数据 (云图)
参考如下:
单一视频的评论数据爬取 (饼状图)
参考如下:
单一视频一周内各个参数数据的爬取 (折线图)
参考如下:
到此位置,所有的数据都经过了可视化操作,生成了5张直观的图表,整个大作业到此也就结束了!