尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

5分钟拿下B站热门数据:这套Python API工具箱把榜单、评论、弹幕全给你备好了

5分钟拿下B站热门数据:这套Python API工具箱把榜单、评论、弹幕全给你备好了 5分钟拿下B站热门数据这套Python API工具箱把榜单、评论、弹幕全给你备好了【免费下载链接】bilibili-apiB站API收集整理及开发不再维护项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-api想抓B站的热门视频、用户资料和弹幕却不想从零啃接口文档这套bilibili-api项目把散落各处的B站接口整理成了开箱即用的Python函数——读完这篇文章你能立刻拉出指定分区的热门榜单、抓全某条视频的全部评论、把弹幕转成ASS字幕文件全程只需要会写几行调用代码。先说个扎心的真相自己造轮子的人多半掉进了坑里很多人第一次想碰B站数据脑子里都是这么想的不就是个爬虫嘛用 requests 把页面拉下来正则一抠完事。然后现实会啪啪打脸。你会发现有的接口要签名校验参数顺序错了直接 403有的数据藏在 JSON 的第三层嵌套里解析到怀疑人生更别提那个经典的官方文档说 ver3实测 ver1 才能拿到数据的玄学问题。等你折腾完这些兴趣早就被磨没了。这套项目存在的意义就是帮你把踩坑这个步骤整个跳过——作者已经把接口地址、参数规则、返回结构、签名算法全部摸了一遍你只需要对着现成的函数清单点菜。先看看后厨菜单三类接口三种取法把 B 站比作一家餐厅的话这套 API 就是后厨的万能点菜单而且分成了三档第一档不掏钱也能吃无需认证拉取视频排行榜单、按条件筛选视频读取视频评论、专题信息、用户基本信息解析弹幕内容第二档需要会员卡appkey AppSecret视频完整详情、新番信息、排行数据关键词搜索视频和专题第三档自己动手翻冰箱直接爬页面整理按时间区间爬取视频排行按年份月份获取新番列表这三档在api.md里写得清清楚楚连每个参数的含义、可选项、返回字段都有标注——文档本身就是项目最值钱的部分之一。两行命令把代码库请进家门先把仓库拉到本地git clone https://gitcode.com/gh_mirrors/bil/bilibili-api然后你只需要关心python API/目录它里面躺着三个核心文件bilibili.py—— 所有 API 函数都在这照着函数名用就行biclass.py—— 定义了一堆现成的数据类User、Video、Comment、Bangumi、Danmu 等support.py—— 底层的请求、JSON 解析、签名等杂活一般不用你碰用的时候就像这样from bilibili import *完了准备工作结束。就这么简单。实战一把最近一周最火的视频搬到你面前这是项目里最经典的入口函数也是我建议你上手敲的第一个GetPopularVideo(begintime, endtime, sortTypeTYPE_BOFANG, zone0, page1, original0)翻译成人话就是在某个时间段里按某种排序方式取出某个分区的第几页视频。举个例子想看看 2024 年 1 月上半个月播放量最高的视频videoList GetPopularVideo([2024,1,1], [2024,1,15]) for video in videoList: print(video.title, video.guankan)begintime和endtime是三元数组[年, 月, 日]sortType决定了排序维度项目里已经给你备好了现成的常量常量排序依据TYPE_BOFANG播放数TYPE_SHOUCANG收藏数TYPE_DANMU弹幕数TYPE_PINGLUN评论数TYPE_YINGBI硬币数TYPE_PINGFEN用户评分zone是分区编号想只看动画就填1游戏填4科技填36具体分区对照表在 api.md 里有完整清单original设为 1 可以只筛原创投稿一个小提醒TYPE_PINYIN拼音和TYPE_TOUGAO投稿时间这两种排序方式比较挑食只能用在二级分区上综合排名和一级分区会直接返回空列表——这不是 bug是接口本身的限制作者在源码里已经帮你挡掉了。实战二评论区和弹幕一个都别放过热门榜单看完了接下来自然是扒评论区。新接口推荐用这个走的是官方新版评论 API返回结构更干净commentList GetComment_v2(aid, page1, order0) for comment in commentList.comments: print(comment.post_user.name, :, comment.msg)order支持1按热门和2按点赞数排序。如果你不满足于一页还有一条GetAllComment会自动帮你把多页评论全部翻完不过它内部会循环请求慢是慢了点省心是真省心。接着上硬菜——弹幕。老读者应该都知道看视频没弹幕等于白看做数据分析更是离不开它。项目里提供了三级递进的弹幕玩法# 第一级拿原始弹幕 XML xml_content GetDanmuku(cid) # 第二级解析成结构化对象按时间排好序 danmu_list ParseDanmuku(cid) for d in danmu_list: print(d.t_video, d.content) # 出现时间、弹幕内容 # 第三级直接转成 ASS 字幕文件丢给播放器用 Danmaku2ASS(GetDanmuku(cid), output.ass, 640, 360)弹幕对象里连弹幕类型都分好了1是滚动、5是顶端、4是底部颜色、时间戳、用户ID 的 CRC 值全都有。想做弹幕情感分析弹幕高频词统计的话素材已经喂到你嘴边了。想省事的话仓库里还单独放了一个GetDanmuAss/GetAss.py工具输入 av 号就能直接生成本地弹幕播放用的 ASS 文件连代码都不用写。顺手还能干这些一张越挖越深的隐藏清单排行榜和弹幕只是冰山一角这套工具箱里还埋了不少实用功能随手列几个查用户底细GetUserInfoBymid(mid)拿到用户的粉丝数、投稿数、关注列表GetVideoOfUploader(mid)翻出某个 UP 主的全部投稿直播状态探测HasLiving(mid)看一个人开没开直播IsLiving(mid)还能顺带返回直播间标题和封面视频下载地址解析GetBilibiliUrl(url, appkey)输入视频页面地址输出真实的下载链接配套的还有GetVideoUrl/biliDownLoad.py独立工具新番跟踪GetBangumi(appkey, btype, weekday)按周几拉新番GetBangumiInfo(bgm_id)获取一整季番剧的剧集详情承包榜数据GetSponsorInfo(aid)能拉出某部番的承包用户名单做谁是真爱粉分析绰绰有余全站在线人数GetOnlineUser()一行代码拿到当前网页在线和播放在线人数往仓库外面看作者还把 API 玩出了更多花样bilibili-po/里有一套完整的UP主关注关系网爬取分析脚本连分析代码都写好了bili-monitor/是自动监视新番数据的小机器人bili_live_guaji/是直播经验挂机脚本甚至还有几个现成的 Alfred Workflow 放在Alfred/目录下——查番剧、搜视频都能用快捷键呼出来。动手之前把这几条潜规则记在小本本上认准接口的含金量排行榜、评论、弹幕、用户信息这些免认证的接口随便玩但GetVideoInfo、GetBangumi、biliVideoSearch这类需要 appkey 和 AppSecret没有的话可以先跳过不影响体验大头。悠着点刷尤其GetAllComment这种会自动翻页的内部都帮你加了time.sleep(0.5)控速——别嫌它慢这是对服务器最基本的尊重。自己写循环时也记得限个速。心态摆正项目已经停止维护了B站接口这些年改版了不少次个别老接口可能已失效。它的价值在于学习接口设计的思路、复用现成的解析逻辑而不是当生产环境依赖来供着。文档是宝遇到函数参数记不清别瞎猜直接翻 api.md每个接口的输入输出都写得明明白白比很多商业 SDK 的文档都实在。下一步该你上场了这套项目最妙的地方在于你不需要懂签名算法不需要会写正则甚至不需要理解 JSON 的层层嵌套——你需要的只是一句我想看什么数据然后去bilibili.py里找到对应的函数名。所以别光看了动手吧。先把那段GetPopularVideo跑起来把你所在分区的热门榜单拉一份再挑一个你常看的视频用ParseDanmuku拆一拆它的弹幕。跑通这两个你就算真正入门了——接下来是深挖评论情感还是分析 UP 主关系网就看你自己的想象力了。毕竟数据这东西看别人文章一百遍不如自己跑通一行代码。【免费下载链接】bilibili-apiB站API收集整理及开发不再维护项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-api创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表