在数据驱动的时代,B站(Bilibili)作为中国最大的年轻人文化社区,拥有海量的视频内容和用户互动数据。无论是做数据分析、内容研究,还是构建推荐系统,获取视频的弹幕数量、点赞数、投币数等互动指标都极具价值。然而,B站的API策略不断更新,很多旧教程已经失效。从零开始,带大家写一个生产级别的B站视频信息爬虫。
目录
一、技术选型与环境搭建
1.1 核心库清单
1.2 环境配置
1.3 B站API逆向分析
二、单视频爬虫基础版(同步)
2.1 获取视频基础统计(点赞、投币、收藏、转发)
2.2 获取弹幕数量(核心难点)
2.3 整合最终函数
三、大规模爬取:异步+多任务(生产级)
3.1 异步版核心代码
3.2 速率限制与防封策略
四、数据存储与持久化
4.1 存储为CSV
4.2 存储到SQLite(支持断点续爬)
4.3 支持断点续爬
五、反爬深度解析与对策
5.1 B站常见的反爬机制
5.2 Cookie注入(获取更高权限)
5.3 代理IP池(大规模必备)
5.4 浏览器指纹模拟(进阶)
六、完整项目代码(可直接运行)
七、运行指南与效果展示
7.1 运行步骤
7.2 预期输出示例
7.3 数据库中存储的数据样例
八、常见问题与解决方案
Q1: 返回 {"code": -404, "message": "啥都木有"}
Q2: 弹幕数一直为0
Q3: 触发412反爬
Q4: 部分视频投币数据为0(实际有投币)
Q5: 异步爬取时内存占用过高
九、扩展与优化方向
9.1 增加更多数据字段
9.2 获取实时弹幕内容(文本挖掘)
9.3 分布式爬取(Redis + Scrapy)
9.4 使用Playwright绕过更复杂的反爬
一、技术选型与环境搭建
1.1 核心库清单
python
# 基础请求与解析 requests # 同步HTTP库,简单直接 httpx # 支持HTTP/2,更现代(备用) aiohttp # 异步HTTP,大批量爬取必备 # 数据解析 json # 内置,处理API返回数据 re # 正则,处理特殊字段 # 加速与伪装 fake_useragent # 随机生成User-Agent retrying # 请求重试机制 # 数据存储 csv # 标准CSV存储 sqlite3 # 轻量级数据库 pandas # 数据分析与导出(可选)