教你用python爬下UP所有视频、评论、弹幕全部拿下

您所在的位置:网站首页 b站弹幕对up主有什么用 教你用python爬下UP所有视频、评论、弹幕全部拿下

教你用python爬下UP所有视频、评论、弹幕全部拿下

2024-05-28 11:01| 来源: 网络整理| 查看: 265

目标

获取B站UP主主页所有视频数据、评论数据、弹幕数据、视频

一、获取视频数据

目的:获取所有视频点赞数、评论数、评论页数等等数据

我们要想获得所有视频的数据,那就要找到视频url的规律,访问所有的视频主页获取数据

分析B站视频url

可以知道视频url的组成包括https:http://www.bilibili.com/video+某个ID,那我们只要获得这个ID就可组成视频的url,好现在我们去获取这个ID 我们去UP主主页中看看

通过我单纯的利用requests发现这个主页视频的url数据包并不是我们看到的,所有我们抓包看看找到他的真实url真实数据包

这个很简单啊,直接抓包就可以,我们看一下它是一个JSON数据,仔细看我画红线的bvid

好了,视频主页的数据包中有bvid,这个bvid就是视频url的重要组成部分,所以我们通过获取主页数据拿到bvid就可以拼接出所有视频的url,所以现在仔细看看一看他的结构每个视频的数据,实在这个vlist中,vlist在list中,list在data中及 ["data"]["list"]["vlist"]["bvid"],上代码

通过这就可解析得到所有视频的所有评论数据,如果想分开就是一个视频的评论数据一个csv那也简单,我在解析评论数据是加入了oid我们后面可以通过oid分割数据,得到每个视频的评论数据,即

评论数据小结

我们在获取评论数据时需要用到视频数据的page、aid,即我们在获取评论数据前,必须先获得视频数据

获取弹幕数据

这个弹幕数据肯定也是动态加载的,所以获取弹幕数据我也有两种方法,也是selenium和找接口,还是试着找接口,我们开始抓包

我们通过抓包一共抓到了5个数据包,唯一一个像弹幕数据包的数据包就是画红线的,但也不是那么像,所以我们网上找了找 这个弹幕数据的接口 :https://comment.bilibili.com/305163630.xml,访问一下

那这个弹幕数据包接口是怎么组成的呢?我们可以看到唯一一个可变因素就是中间的一串数字,那这一串数字怎么组成的呢?欸,我们现在拿我们抓包得到的那个数据包url和这个接口放到一起看一看

我们看啊,抓包得到的url中的oid就是我们弹幕数据接口中需要的一串数字,那现在就简单了我们只要拿到这一串数字就可以拼接弹幕数据接口进而拿到数据,问题又来了怎么拿到这串数据呢?手动一个一个的输入这样拿吗?不,太low了,我的方法是 通过mitmdump获得,为了mitmdump获得这串数字我们就需要点击视频中弹幕这个按钮,所以又用到了selenium。通过自动访问所以视频网页点击弹幕 mitmdump获得url进而获得这串数字

mitmdump调用py

模拟点击弹幕

我们通过mitmdum调用 mitmdump -s 文件名 -p 端口号 筛选出弹幕url提取出这一串数字并保存

至此我们得到了所以视频的这一串数字,现在我们就可以拼接数据包接口url了

有了url那获取数据就太简单了,这是个xml格式的,很简单直接看代码

弹幕数据小结

为了获取数据找到了接口进而为了获取那一串数字,而后通过mitmdump和selenium提取数字,拼接url 访问进而获取数据,这是我们方法我想肯定有更好的

自动下载视频

如果说找到这个视频的接口url我不知道怎么做,所以用了另一种方法,chrome中有一款插件叫哔哩哔哩助手,有了它我们通过访问每个视频,模拟点击 然后下载(这个插件很不错的)大家看啊,这个插件功能很多的也可以下载弹幕,关于这个插件的安装,如果会科学上网,那就去谷歌商店直接搜索哔哩哔哩助手,不会的同学我放到了我主页简介的里,回复B站就拿到了源码和插件

有了思路那就简单了进入视频UP主主页,通过模拟点击每个视频在点击哔哩哔哩助手在点击下载即可,一点一点来,先是在主页循环点击每个视频进入每个视频页(之前我们可以拿到所有的视频url了,所以此步骤完全可以通过访问每个url的方式进行下步骤操作)

接下来是点击下载了

到这注意了要考虑一种情况,那就是是否存在视频列表,如果这个视频存在视频列表我们是需要全部下载下来的,如果就是单个视频那这就可以了。也就是说视频中存在视频列表合集中有多少视频,模拟点击每个视频,就要下载多少次,如果没有下载一次就可以了

还有一点要注意,那就是selenium默认实例化的chrome是没有我们这个插件,所以我们设置启动带有插件的chrome

option.add_argument后加入的地址是根据自己电脑而定的,可以在chrome地址栏输入chrome://version/ 查看浏览器信息,到User Data就结束了,还有斜杠要反过来。

这次模拟启动chrome时要关闭所有的chrome要不然会报错

下载视频小结

方法依赖性太强,必须通过自动点击插件的方式下载

总结

通过多个文件运行获取B站UP所有的视频,整体来说我觉得还是很不错的

文章用到的源码、插件我放到主页简介里回复B站获取

弹幕数据:通过上面的方法是获取不完全的,可以通过自动下载视频的方式自动下载弹幕

评论数据:建议睡眠时间长一点,或者分批爬取,有代理池的可以忽略

如果觉得这篇文章不错、或者对你有帮助的话就请点个赞吧,谢谢大家的观看



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3