V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
zhijieju
V2EX  ›  Python

GitHub:哔哩哔哩的 API 调用模块

  •  
  •   zhijieju · 2020-09-15 18:26:43 +08:00 · 1322 次点击
    这是一个创建于 1320 天前的主题,其中的信息可能已经有所发展或是发生改变。

    hello,小伙伴们,大家好,今天给大家介绍的开源项目是:bilibili_api,这个开源项目主要是用 Python 写的调用 Bilibili 各种 API 的库,范围涵盖视频、音频、直播、动态、专栏、用户、番剧等[1]。你可以使用很简短的代码去调用 API,而不需要自己去寻找 API,指定各种参数。

    安装

    pip install bilibili_api
    

    • requests
    • beautifulsoup4
    • aiohttp
    • websockets
    • cssutils

    特色


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

    使用


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

    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 。

    点开后,我们在下面找到以下两个键对应的值,分别是 SESSDATA 和 bili_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 调用

    所有 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)
    

    以上就是这个开源项目的介绍了,感兴趣的小伙伴,不妨自己去应用一下,peace!

    开源地址: https://github.com/Passkou/bilibili_api 项目官网: bilibili_api 官网 开发文档: bilibili_api 开发文档

    今天的推荐不知道大家喜欢吗?如果你们喜欢话,请在文章底部留言或点赞,以表示对我的支持,你们的留言,点赞,转发关注是我持续更新的动力哦!

    关注公众号回复:"1024",免费领取一大波学习资源,先到先得哦!

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1247 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 23:42 · PVG 07:42 · LAX 16:42 · JFK 19:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.