一个用于查询B站用户数据的Python程序,通过B站API获取用户信息、关注/粉丝数量、播放量和点赞数等数据,并支持下载用户头像、头像框和勋章图片,同时生成可视化信息卡片。
- 查询用户基本信息(ID、昵称、性别、签名、等级、会员信息等)
- 获取关注数和粉丝数
- 获取播放量和点赞数
- 下载用户头像、头像框和勋章图片
- 数据以JSON格式保存到本地
- 网络请求失败自动重试机制
- 支持批量查询多个用户
- 提供Web API接口,支持HTTP请求查询
- 生成用户信息可视化卡片图片
- 自动管理查询历史记录,保留最新3个用户的查询结果
- 支持命令行交互和Web API两种使用方式
- 自动化数据文件管理,历史数据自动清理
- Python 3.6+
- requests库
- Pillow库
- Flask库
pip install requests pillow flask- 打开B站网站 (https://www.bilibili.com) 并登录账号
- 按F12打开开发者工具
- 切换到"网络"或"Network"标签页
- 刷新页面,找到任意一个B站API请求
- 在请求的Headers中找到Cookie信息
- 复制Cookie内容
在项目根目录创建cookie.txt文件,将获取到的Cookie粘贴进去并保存:
buvid3=xxx; _uuid=xxx; SESSDATA=xxx; bili_jct=xxx
python app.py程序运行后会启动Web API服务并提示输入B站用户MID(用户ID),输入后按回车开始查询:
请输入B站用户MID(输入'quit'退出): 123456789
程序启动后会自动启动Web API服务,运行在 http://127.0.0.1:12561
GET /- 获取API服务信息和使用说明GET /<mid>- 查询指定MID的用户数据并返回JSON格式结果(如果本地有数据则直接返回,否则先查询再返回)GET /card/<mid>- 获取指定MID的用户信息卡片图片(如果本地有图片则直接返回,否则先生成再返回)
- 查询用户数据:
http://127.0.0.1:12561/2- 查询MID为2的用户数据 - 获取用户卡片:
http://127.0.0.1:12561/card/2- 获取MID为2的用户信息卡片
- 位置:
data/{用户ID}_data.json - 格式:JSON
- 包含:用户基本信息、关注粉丝数、播放点赞数等
- 位置:
img/ - 格式:JPG/PNG
- 文件名格式:
{用户ID}_face.xxx- 用户头像{用户ID}_pendant.xxx- 头像框{用户ID}_nameplate.xxx- 勋章
- 位置:
output/{用户ID}.png - 格式:PNG
- 包含:用户头像、基本信息、统计数据等
| 字段名 | 说明 |
|---|---|
| mid | 用户ID |
| name | 用户名 |
| sex | 性别 |
| sign | 签名 |
| level | 等级 |
| vip_text | 会员信息 |
| official_title | 官方认证标题 |
| attestation_title | 认证信息 |
| nameplate_name | 勋章名称 |
| pendant_name | 头像框名称 |
| following | 关注数量 |
| follower | 粉丝数量 |
| view | 播放量 |
| likes | 点赞总数 |
| card_image_url | 用户信息卡片图片的API访问地址 |
程序使用以下B站API接口:
https://api.bilibili.com/x/space/acc/info- 获取用户基本信息https://api.bilibili.com/x/relation/stat- 获取关注和粉丝数量https://api.bilibili.com/x/space/upstat- 获取播放和点赞数量
- 网络请求失败时会自动重试(最多3次)
- API返回错误时会显示错误信息
- Cookie无效时可能导致部分数据无法获取
程序会自动管理历史查询数据,当查询历史超过3个用户时,会自动删除最早查询的用户数据文件(包括数据文件、图片文件和生成的卡片)。
程序使用PIL(Pillow)库绘制用户信息卡片,包含:
- 用户头像、昵称、等级、认证信息
- 关注数、粉丝数、播放量、点赞数的可视化展示
- 背景、边框等装饰元素
- 响应式布局设计
- 请使用自己的B站账号Cookie,不要使用他人的Cookie
- 查询频率不宜过快,避免被B站限制访问
- Cookie过期时需要重新获取并更新
cookie.txt文件 - 本程序仅供学习交流使用,请遵守B站相关服务条款
- 程序会自动管理查询历史,保留最新的3个用户数据
- Web API服务默认运行在12561端口,可通过修改代码更改端口号
biliuserquery/
├── app.py # 主程序入口,包含命令行和Web API启动
├── draw_user_card.py # 用户信息卡片生成器(兼容旧版调用)
├── web_api.py # Web API服务实现
├── common.py # 公共功能模块(查询历史管理、数据删除等)
├── cookie.txt # 存放B站Cookie信息
├── query_history.json # 查询历史记录
├── api/
│ ├── __init__.py
│ ├── user_info.py # 用户信息API
│ ├── relation_stat.py # 关系统计API
│ └── upstat.py # UP主统计数据API
├── data/ # 存放查询结果数据
├── img/ # 存放下载的用户图片
├── output/ # 存放生成的用户信息卡片
├── drawing/ # 绘图模块
│ ├── __init__.py
│ ├── main.py # 绘图主函数
│ ├── background_drawer.py # 背景绘制
│ ├── user_info_drawer.py # 用户信息绘制
│ ├── image_drawer.py # 图片绘制
│ ├── stats_drawer.py # 统计数据绘制
│ ├── font_manager.py # 字体管理
│ └── download_fonts.py # 字体下载
└── __pycache__/ # Python缓存文件