某站弹幕抓取,视频,评论......

现在某站的内容也可以爬取了,包括弹幕,评论,点赞,投币的功能.........,给大家介绍一个方便的库,方法如下:

第一步:安装

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("写入文件成功")

 

 

 

 

你可能感兴趣的:(python,开发语言)