All Projects → Passkou → Bilibili Api

Passkou / Bilibili Api

Licence: gpl-3.0
哔哩哔哩的API调用模块

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Bilibili Api

Bilibili member crawler
B站用户爬虫 好耶~是爬虫
Stars: ✭ 115 (-83.66%)
Mutual labels:  bilibili, spider
Bilibili User Information Spider
B站3亿用户信息爬虫(mid号,昵称,性别,关注,粉丝,等级)
Stars: ✭ 136 (-80.68%)
Mutual labels:  bilibili, spider
Geetest
滑动验证码,希望对你们有所帮助❤️
Stars: ✭ 114 (-83.81%)
Mutual labels:  bilibili, spider
Animesearcher
整合第三方网站的视频和弹幕资源, 为白嫖党提供最佳看番追剧体验
Stars: ✭ 101 (-85.65%)
Mutual labels:  bilibili, spider
Bilibili manga download
带图形界面的哔哩哔哩漫画下载工具
Stars: ✭ 52 (-92.61%)
Mutual labels:  spider, bilibili
Videospider
抓取豆瓣,bilibili等中的电视剧、电影、动漫演员等信息
Stars: ✭ 186 (-73.58%)
Mutual labels:  bilibili, spider
Decryptlogin
APIs for loginning some websites by using requests.
Stars: ✭ 1,861 (+164.35%)
Mutual labels:  bilibili, spider
Bilili
🍻 bilibili video (including bangumi) and danmaku downloader | B站视频(含番剧)、弹幕下载器
Stars: ✭ 379 (-46.16%)
Mutual labels:  bilibili, spider
bilibili-smallvideo
🕷️用于爬取B站前top100的小视频
Stars: ✭ 133 (-81.11%)
Mutual labels:  spider, bilibili
Biliutil
Bilibili.com视频批量下载工具包
Stars: ✭ 212 (-69.89%)
Mutual labels:  bilibili, spider
yutto
🧊 一个可爱且任性的 B 站视频下载器(bilili V2)
Stars: ✭ 383 (-45.6%)
Mutual labels:  spider, bilibili
Bili Spider
📺 B 站全站视频信息爬虫
Stars: ✭ 414 (-41.19%)
Mutual labels:  bilibili, spider
Douyin
API of DouYin for Humans used to Crawl Popular Videos and Musics
Stars: ✭ 580 (-17.61%)
Mutual labels:  spider
Icrawler
A multi-thread crawler framework with many builtin image crawlers provided.
Stars: ✭ 629 (-10.65%)
Mutual labels:  spider
Netdiscovery
NetDiscovery 是一款基于 Vert.x、RxJava 2 等框架实现的通用爬虫框架/中间件。
Stars: ✭ 573 (-18.61%)
Mutual labels:  spider
Spider163
抓取网易云音乐热门评论
Stars: ✭ 569 (-19.18%)
Mutual labels:  spider
Oneblog
👽 OneBlog,一个简洁美观、功能强大并且自适应的Java博客
Stars: ✭ 678 (-3.69%)
Mutual labels:  spider
Istock
👉一个基于spring boot 实现的java股票爬虫(仅支持A股),如果你❤️请⭐️ . V2升级版正在开发中!
Stars: ✭ 622 (-11.65%)
Mutual labels:  spider
Xxl Crawler
A distributed web crawler framework.(分布式爬虫框架XXL-CRAWLER)
Stars: ✭ 561 (-20.31%)
Mutual labels:  spider
91porn php
最简单的91porn爬虫php版本
Stars: ✭ 557 (-20.88%)
Mutual labels:  spider

LOGO

bilibili_api

API数量 STARS LICENSE Python

开发文档: bilibili_api 开发文档

公告

项目主分支已变更为main,请注意。

介绍

这是一个用Python写的调用 Bilibili 各种API的库,范围涵盖视频、音频、直播、动态、专栏、用户、番剧等[1]。你可以使用很简短的代码去调用API,而不需要自己去寻找API,指定各种参数。

用到的第三方库:

  • requests
  • beautifulsoup4
  • aiohttp
  • websockets
  • cssutils

特色

  • 范围涵盖广,基本覆盖常用的爬虫,操作。
  • 可使用代理,绕过b站风控策略。
  • 全面支持BV号(bvid),同时也兼容AV号(aid)。
  • 调用简便,函数命名易懂,代码注释详细。
  • 不仅仅是官方提供的API!还附加:AV号与BV号互转[2]、连接直播弹幕Websocket服务器、视频弹幕反查[3]、专栏内容爬取等。
  • 更多功能请参照 开发文档

快速开始

首先使用以下指令安装本模块:

$ pip install bilibili_api

接下来我们来获取视频的播放量等信息:

from bilibili_api import video

v = video.get_video_info(bvid="BV1uv411q7Mv")
print(v)

输出(已格式化,已省略部分):

{
    "bvid": "BV1uv411q7Mv",
    "aid": 243922477,
    "videos": 1,
    "tid": 17,
    "tname": "单机游戏",
    "copyright": 1,
    "pic": "http://i2.hdslb.com/bfs/archive/82e52df9d0221836c260c82f2890e3761a46716b.jpg",
    "title": "爆肝98小时!在MC中还原糖调小镇",
    "pubdate": 1595203214,
    "ctime": 1595168654,
    ...
}

就这么简单。

如何给这个视频点赞?我们需要登录自己的账号。

几乎所有函数都支持传入一个本API自定义的类 bilibili_api.Verify ,用于验证登录。

为了调用API方便,我们一次性获取全部需要用到的值。

获取 SESSDATA 和 CSRF

这里以 谷歌浏览器 为例。

首先我们可以在链接栏左侧看到一个小锁,如果你没有使用HTTPS,那么可能会显示 不安全 的字样,点击以后,下面有个Cookies。

点开后,我们在下面找到以下两个键对应的值,分别是 SESSDATAbili_jct,这里注意一下,**bili_jct 就是 CSRF **。

接下来,我们实例化 bilibili_api.Verify 类,之后用于传入各种API函数。

from bilibili_api import Verify

verify = Verify(sessdata="你的SESSDATA值", csrf="你的bili_jct值")

接下来我们给这个视频进行点赞操作,完整代码如下:

from bilibili_api import video, Verify

verify = Verify("你的SESSDATA值", "你的bili_jct值")
video.set_like(bvid="BV1uv411q7Mv", status=True, verify=verify)

如果没有报错,就代表调用API成功,你可以到视频页面确认是不是调用成功了。

注意,请不要泄露这两个值给他人,否则你的账号将可能遭受盗号的风险!

注意,请不要泄露这两个值给他人,否则你的账号将可能遭受盗号的风险!

注意,请不要泄露这两个值给他人,否则你的账号将可能遭受盗号的风险!

一些注意事项

这里是一些常见的注意事项,基本只要遵守了这些注意事项调用API就不会出太大问题~~(除非有BUG)~~

关于API调用

所有API调用,请尽量使用 指名方式 传参,因为API较多,我写的时候可能不同函数的传参顺序不一样,例子:

# 建议方式
video.set_like(bvid="BV1uv411q7Mv", status=True, verify=verify)

# 当然也可以这样
kwargs = {
    "bvid": "BV1uv411q7Mv",
    "status": True,
    "verify": verify
}
video.set_like(**kwargs)

# !!!不建议方式
video.set_like("BV1uv411q7Mv", True, verify)

这样不管顺序是怎么样都不用怕了(余裕)

关于b站风控策略

请求速度不要过快,自己测试简单的线性请求(如单线程使用循环结构)请求是不会触发风控策略的,当然这是大部分API,以实际情况为准。

如果你使用多线程、多进程或者并发等在同一时间点请求多次的方法,可能会触发b站风控策略,返回的状态码是412,导致无法继续使用爬虫。

当然如果你已经触发风控策略,可以通过设置代理来绕过。设置方法如下:

import bilibili_api

bilibili_api.request_settings["proxies"] = {} # 里头填写你的代理

如何设置请参照 requests 设置代理,传入和说明相同的值就可以了。

Issue 提交规范

为了能高效回答大家的问题,在这里简单讲一下提交Issue的规范,这么做对你我都方便_(:з」∠)_。

目前Issue的Tag暂时分为以下几类:

  1. 建议,给这个API的建言献策。
  2. 提问,在使用过程中遇到的疑问。
  3. 漏洞,API出现了BUG。
  4. 需求,API尚未收录的功能但是你有需求。

这个Tag只能我标记,希望你们在提交Issue的时候尽量使用以下格式:


类型:上述提到的Tag

版本:你当前使用的API版本

(这里就可以写正文了)


举个栗子


类型:漏洞

版本:2.0.0

你这是什么API啊,害人不浅啊。你已经是个成熟的API了,怎么还不会帮我自动爬虫?我看你就是个逊啦。


在提交 Issue 前

如果是遇到漏洞,建议你先检查自己API的版本是不是最新的,可能更新到最新版本就解决了问题。如果已经是最新的仍然存在漏洞,就可以提交 Issue 来骂我 (并不)

提问前请先仔细阅读 开发文档 !!!!里面写的很全面,如果实在不懂再发 Issue 来问。

PR规范 (不是舔)

PR: Pull request

首先非常欢迎你对代码做出贡献~~(这样我就可以偷懒了)~~

在提交PR前,请务必遵守以下的规则,方便你的代码通过审核:

  1. 如果你要增加新的API,请先在 data/api.json 中对应分类增加API的详细说明,具体格式可以参照现有的内容。另外,请对增加的API代码注释进行详尽的说明,每个参数除非含义十分明显(如bvid),都进行说明,具体格式可以参照现有代码。
  2. 希望你能在肝代码前,看看现有的代码风格,尽量模仿,方便日♂后维护。这里有一份代码风格规范文档可以参考,实际上如果你使用的IDE是PyCharm,也会对你的代码进行指导。当然,如果你执意不遵守的话............那我就会累死了QAQ。
  3. 所有PR请向develop分支发起

计划写一份面向开发者的开发文档 (咕咕咕)

支持这个项目

这个项目目前只由我(Passkou)一个人在维护。

如果你想支持一下这个项目,可以做以下几点:

  1. GitHub上给个小星星(star)~
  2. 如果你的项目中用到了这个库,可以在说明文档中标注一下这个项目的Github地址。
  3. 如果你用了这个项目进行爬虫,制作了数据统计视频并发到b站或其他视频平台,你也可以在简介中注明一下用到了这个模块,这就够了。
  4. 当然,你也可以参与维护这个项目,提交PR即可。

脚注

[1]: 这里只列出一部分,请以实际API为准。

[2]: 代码来源:https://www.zhihu.com/question/381784377/answer/1099438784

[3]: 代码翻译自:https://github.com/esterTion/BiliBili_crc2mid

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].