尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

B站数据获取新手必看:一个开源工具包让你3步玩转视频、用户与弹幕数据

B站数据获取新手必看:一个开源工具包让你3步玩转视频、用户与弹幕数据 B站数据获取新手必看一个开源工具包让你3步玩转视频、用户与弹幕数据【免费下载链接】bilibili-apiB站API收集整理及开发不再维护项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-api你有没有过这样的经历想做一期数据分析视频想看看某个UP主的涨粉趋势或者想把某部番的弹幕导出来做成字幕收藏——结果一搜B站开放平台发现接口文档七零八落有的要申请权限有的要各种签名算法折腾一晚上还没跑通第一行代码。如果你正卡在这个环节那么今天要介绍的这个项目很可能就是你要找的那把万能钥匙。它是一个叫bilibili-api的开源工具包把B站视频、用户、弹幕、番剧、直播等常见数据接口做了统一封装作者踩过的坑都替你先踩完了你只需要照着文档调用函数即可。这个项目能帮你解决什么一句话概括它把从B站拿数据这件事从翻网页找接口、研究参数、手写解析变成调一个函数。你的需求它能提供的支持想拿某分区一段时间内的视频榜单排行接口支持按播放、弹幕、收藏、硬币等多种口径排序想了解某个UP主的基本盘用户信息、投稿列表、关注/粉丝列表、是否在直播一应俱全想把弹幕变成可分析的数据弹幕解析接口返回时间、内容、颜色、类型等结构化字段想追新番、查专题番剧信息、专题视频列表、承包数据等接口想下载视频或做字幕附带的下载地址解析工具和弹幕转ASS字幕工具适合谁来用答案几乎覆盖所有人做内容分析的研究者、想给自家工具加数据能力的开发者、以及只想图个省事的普通爱好者。不需要你掌握复杂的签名算法也不需要你先读懂B站每一份接口文档。从零跑通第一次调用只需三步整个上手过程比你想的简单跟着走一遍基本就熟了。第一步把源码拿到本地git clone https://gitcode.com/gh_mirrors/bil/bilibili-api第二步找到核心代码所在克隆完成后进入python API/目录里面就是Python版本的API封装。核心文件有三个bilibili.py所有接口函数都在这是使用频率最高的文件biclass.py定义了User、Video、Comment、Danmu等数据结构类support.py底层的网络请求与解析辅助函数第三步在Python里导入并调用把python API/目录放到你的项目里然后from bilibili import * # 查一个UP主的公开资料只需要他的mid用户ID info GetUserInfoBymid(2) print(info.name, info.fans)至此你已经完成了一次真实的B站数据获取。整个过程不需要注册任何开发者账号因为项目里相当一部分接口是免认证的。三个高光功能帮你理解它的设计思路1. 视频榜单一个函数拿到任意分区的排行做运营或选题策划的人经常会问最近科技区哪些视频最火 用爬虫去解析榜单页面当然可以但要处理翻页、编码、反爬麻烦。项目里的GetPopularVideo函数把这个需求收敛成了一个调用# 指定起始时间、结束时间、排序方式、分区、页码 videos GetPopularVideo([2024, 1, 1], [2024, 1, 31], sortTypeTYPE_BOFANG, zone4, page1) for v in videos: print(v.title, v.guankan)排序方式覆盖播放数、评论数、弹幕数、收藏数、硬币数等常见维度分区参数从综合动画到游戏科技娱乐全覆盖还有二级分区编号可以在api.md里查到。想只看原创内容把original参数置1即可。2. 用户画像顺着一个ID摸清一个人的公开简历只要知道一个mid你能拿到的数据远超想象基本信息性别、所在地、认证状态、粉丝数、投稿列表、关注了谁、谁关注了他、收藏夹、甚至是否正在直播。# 按ID查询用户 u GetUserInfoBymid(12345) # 拉取该用户最近投稿的视频 videos GetVideoOfUploader(12345, pagesize20, page1) # 看看他此刻有没有在直播 if IsLiving(12345): print(正在直播中)如果记不住ID也可以直接传昵称给GetUserInfoByName。这套接口非常适合做UP主关注关系图谱粉丝画像分析之类的项目——仓库里的bilibili-po/目录就是作者当年爬取关注关系网做分析的完整案例。3. 弹幕解析把飘过的字变成结构化数据弹幕是最有B站特色的数据也是分析用户情绪、视频热度的金矿。拿到视频的cid每个分P有独立的cid就能拉取全部弹幕danmu_list ParseDanmuku(cid) for d in danmu_list: print(d.t_video, d.content, d.danmu_color)返回的每条弹幕都包含出现时间基于视频、发表时间戳、内容、类型滚动/顶部/底部、颜色甚至还有发送者mid的哈希值可用于去重统计。更进一步项目里的GetDanmuAss工具可以把弹幕直接转成ASS 字幕文件下好视频挂上字幕本地也能还原弹幕氛围——追番党应该懂这个需求有多刚需。实战小贴士三个常见坑帮你提前避开坑一别把请求频率拉满。作者在文档里反复强调读取速度不能太快尤其排行类接口响应偏慢短时间高频请求容易触发风控。建议在循环里加time.sleep()把它当成人肉浏览的节奏去请求。坑二分清免认证和需认证两类接口。用户信息、弹幕、评论、专题等走的是公开接口直接可用而获取视频详细信息、搜索视频、获取下载地址等需要appkey甚至AppSecret签名。文档的需认证章节给出了签名算法GetSign并特别提醒新注册的 key 必须带签名否则会收到-3错误。项目自带的GetVideoUrl工具里内置了一组可用的 key可以直接参考。坑三留意接口的时效性。B站接口和网页结构一直在变某些老接口如api.bilibili.cn域名下的如今可能已失效或限流例如旧版评论接口只对特定范围的AV号有效。遇到报错时优先检查是不是接口域名更新了再对照api.md里的记录排查。项目里还藏着哪些小工具除了API封装仓库里还附带了一堆即开即用的脚本像是作者的私人工具箱被公开了GetVideoUrl/输入视频页面地址输出真实下载地址列表BiliMerge/把手机客户端离线缓存的flv分段合并成完整视频danmu-Delay/给ASS弹幕文件整体做延时偏移配合视频剪辑使用bili_live_guaji/直播经验挂机脚本Alfred/几个基于API做的Mac效率工具Workflowbili-monitor/监控新番播放数据的脚本另外要如实提醒一句这个项目已经停止维护接口文档停留在其所在时代的B站版本部分老接口大概率已失效。但把它当作学习B站数据获取思路的教科书、或者旧接口的参考实现价值依然很大——尤其是数据结构定义、签名算法、解析逻辑这些不会过时的部分。写在最后说到底这个项目最大的价值不在于现在还能不能用而在于它用一套清晰的代码向你展示了B站的数据获取可以这么系统、这么有条理。无论你是想自己搭一个数据小工具还是单纯想搞懂B站数据从哪来、怎么拿翻一翻它的源码和api.md都能少走很多弯路。工具会过时但思路不会。现在就把它clone下来跑通你的第一行B站数据代码吧——说不定下一个好玩的B站数据项目就从你这里开始了。【免费下载链接】bilibili-apiB站API收集整理及开发不再维护项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-api创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表