2021-04-21爬虫爬取b站直播间弹幕并制作词云

直播间弹幕接口

'https://api.live.bilibili.com/xlive/web-room/v1/dM/gethistory?roomid=' + roomid

示例:

json格式化

{
	"code": 0,
	"data": {
		"admin": [{
			"text": "哈哈哈哈哈",
			"uid": 4760898,
			"nickname": "clown丶cry",
			"uname_color": "#E17AFF",
			"timeline": "2021-04-20 20:55:55",
			"isadmin": 1,
			"vip": 0,
			"svip": 0,
			"medal": [22, "欧皇菜", "clown丶cry", 22744074, 1725515, "", 0, 6809855, 1725515, 5414290, 3, 1, 4760898],
			"title": ["", ""],
			"user_level": [38, 0, 10512625, 40644],
			"rank": 10000,
			"teamid": 0,
			"rnd": "1618923349",
			"user_title": "",
			"guard_level": 2,
			"bubble": 2,
			"bubble_color": "#19897EFF,#403F388E,#33897EFF",
			"check_info": {
				"ts": 1618923355,
				"ct": "6E3407C2"
			},
			"lpl": 0
		},
            .
            .
            .
      ],
		"room": [{
			"text": 
  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是使用Python爬取B站直播弹幕的代码示例: ``` python import requests import json import time def get_real_url(room_id): # 获取直播间的真实流媒体地址 url = 'https://api.live.bilibili.com/xlive/web-room/v1/playUrl/playUrl' params = { 'cid': room_id, 'qn': '10000', 'platform': 'web', 'https_url_req': 1, 'ptype': '16', 'reftype': '0', 'ts': int(time.time()) } headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299', 'Referer': f'https://live.bilibili.com/{room_id}' } response = requests.get(url, params=params, headers=headers) response_json = json.loads(response.content.decode('utf-8')) real_url = response_json['data']['durl'][0]['url'] return real_url def get_danmu(room_id): # 获取直播间弹幕 url = f'wss://broadcastlv.chat.bilibili.com:2245/sub' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299', 'Referer': f'https://live.bilibili.com/{room_id}' } real_url = get_real_url(room_id) # 通过websocket连接到B站弹幕服务器 ws = create_connection(url, headers=headers) # 发送认证消息 uid = int(1e14) + int(2e14 * random.random()) auth_data = { 'uid': uid, 'roomid': room_id, 'protover': 2, 'platform': 'web', 'clientver': '1.14.3', 'type': 2, 'key': real_url.split('?')[1], } auth_json = json.dumps(auth_data).encode('utf-8') ws.send(auth_json) # 循环接收弹幕 while True: try: recv_data = ws.recv() recv_json = json.loads(gzip.decompress(recv_data).decode('utf-8')) # 处理收到的数据 if recv_json['cmd'] == 'DANMU_MSG': danmu = recv_json['info'][1] print(danmu) except Exception as e: print(e) ``` 使用上述代码,您需要传入B站直播间的房间号,代码会自动获取该直播间的真实流媒体地址,然后连接到弹幕服务器并接收弹幕消息。在接收到弹幕消息后,可以根据自己的需要进行处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值