现在某站的内容也可以爬取了,包括弹幕,评论,点赞,投币的功能.........,给大家介绍一个方便的库,方法如下:
第一步:安装
pip3 install bilibili-api-python
Python3.11 Windows 用户可能会遇到 lxml
安装失败的问题,可以直接用轮子(具体版本参照 requirements
接下来我们来获取视频的播放量等信息:
import asyncio
from bilibili_api import video
async def main():
# 实例化 Video 类
v = video.Video(bvid="BV1uv411q7Mv")
# 获取信息
info = await v.get_info()
# 打印信息
print(info)
if __name__ == '__main__':
asyncio.get_event_loop().run_until_complete(main())
输出(已格式化,已省略部分):
{
"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,
...and more
}
这个库还可以操作为视频点赞有兴趣的朋友可以参考上述地址,本文重点介绍弹幕内容的爬取:
'''
同步执行异步代码
考虑到有部分开发者有需要写同步代码的需求,亦或是简单的逻辑不想用异步,这里提供了一个很方便的异步转同步代码,使用方法如下:
'''
'''
同步执行异步代码
考虑到有部分开发者有需要写同步代码的需求,亦或是简单的逻辑不想用异步,这里提供了一个很方便的异步转同步代码,使用方法如下:
'''
from bilibili_api import sync, video
import re
import pandas as pd
# 获取弹幕(需要提供的视频的aid)
v = video.Video(aid=293217914)
# print(sync(v.get_danmakus()))
danmu = sync(v.get_danmakus())
danmu_xml = sync(v.get_danmaku_xml())
print(danmu_xml)
file_name = '屋檐之夏第一集.csv'
# 数据处理
data = [data.text for data in danmu]
for i in data:
i = re.sub('\s+', '', i)
# 查看数量
print("弹幕数量为:{}".format(len(data)))
# 输出到文件
df = pd.DataFrame(data)
df.to_csv(file_name, index=False, header=None, encoding="utf_8_sig")
print("写入文件成功")