本项目为Bilibili评论区楼中楼API封装了一套Python接口。基于此接口,本项目提供了爬取楼中楼内容、统计用户盖楼数量等多个实用例程。此外,本项目还简述了Bilibili评论区楼中楼的API接口调用方法。
api.bilibili.com/x/v2/reply/detail
GET
无需登录
名称 | 含义 | 说明 |
---|---|---|
oid | AV号 | |
root | 主楼ID | |
type | 请求类型 | 意义不明,必须为1 |
ps | 请求页大小 | 默认值20,最大值20 |
next | 请求起始楼号 | 楼号从1编号 |
https://api.bilibili.com/x/v2/reply/detail?oid=85002656&root=4098382684&type=1&ps=20&next=6
application/json; charset=utf-8
名称 | 含义 | 说明 |
---|---|---|
.code |
返回码 | 触发风控规则时返回-412 |
.data.cursor |
记录游标 | |
.data.cursor.is_end |
是否到达楼中楼末尾 | |
.data.cursor.next |
下次请求起始楼号 | 如果已到达末尾则为0 |
.data.root.replies |
楼中楼列表 | |
.data.root.replies[index].rpid |
评论ID | |
.data.root.replies[index].member.uname |
评论者昵称 | |
.data.root.replies[index].member.mid |
评论者UID | |
.data.root.replies[index].content.message |
楼中楼内容 |
该函数向Bilibili API请求JSON对象,请求成功则返回JSON转成的dict
,请求失败则抛出异常。
该函数从dict
中解析所需数据,返回包含楼中楼信息的list
和记录游标。如果二次开发时需要解析另外的字段,你可以修改该函数内的for
循环。
该函数会获取某回复的所有楼中楼,返回包含楼中楼信息的list
。当设置print_log=True
时,每次请求成功会打印一下请求范围。
该函数会爬取某回复的所有楼中楼,并以主楼ID作为文件名输出到Excel中。当设置print_log=True
时,会将时间戳转为友好格式。print_log
与get_all_reply
含义一致
pip install -r requirements.txt
或
pip install requests
pip install pandas
pip install openpyxl
from crawler import crawl_to_excel
# AV号
oid = 85002656
# 评论ID
roots = [4098373645, 4098382684]
for root in roots:
crawl_to_excel(oid, root)
这段代码可以爬取av85002656某两层评论的楼中楼,将结果导出为Excel,同时将时间戳格式化为易读格式。
import pandas as pd
import openpyxl
from crawler import get_all_reply
# AV号
oid = 85002656
# 评论ID
roots = [4098373645, 4098382684]
# 所有回复
replies = []
for root in roots:
reply_list = get_all_reply(oid, root)
replies.extend(reply_list)
df = pd.DataFrame(replies)
df.groupby(["uid", "name"]).size().sort_values(ascending=False).to_excel("rank.xlsx")
这段代码可以统计av85002656某两层评论中各用户的盖楼数,并输出到Excel。
这段代码可以读取Excel,统计盖楼关键词,输出词云。
这段代码可以读取Excel,统计包含指定读音的评论数。
import BiliReplyDetailCrawler
祝心華小姑娘生日快乐!
感谢@叶玖离 组织这次活动,感谢参与的各位,感谢喜欢心華的每一位小伙伴。
如果您喜欢此项目,请多关注Vocaloid歌手心華,请多支持心華的《横竖撇点折》(av85002656)。
此项目根据 MIT 许可的条款进行许可。