python实现B站自动发弹幕_python代码

目录

基本开发环境

相关模块的使用

目标网页分析

一些需要更改的数据

 实现效果

完整代码如下


基本开发环境

  • Python 3.6

  • Pycharm 

  • Chrome浏览器

相关模块的使用

import requests
import time
import random

目标网页分析

首先登录个人b站账号,然后随机点个直播间测试

如上图所示,先打开开发者工具,定位到xhr输入发送内容,点击发送,会有一个post请求的send数据接口。

所以只需要请求这个数据接口即可发送弹幕。

一些需要更改的数据

 cookie

 实现效果

完整代码如下

import requests
import time
import random
# 自动发送的弹幕内容
list_text = ['666', '主播真厉害',
            '爱了,爱了',
            '关注走一走,活到99',
            '牛逼!!!',
            '秀儿,是你吗?']


def send():
    a = 0
    while True:
        # 发送的间隔时间
        time.sleep(10)
        send_mesg = random.choice(list_text)
        url = 'https://api.live.bilibili.com/msg/send'
        data = {
            'buble': '0',
            'msg': send_mesg,
            'color':'16777215',
            'mode': '1',
            'fontsize': '25',
            'rnd': '复制自己的',
            'roomid': '想发送弹幕的房间id',
            'csrf': '复制自己的',
            'csrf_token': '复制自己的',
        }

        headers = {
            'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36',
            'referer': 'https://live.bilibili.com/8669571?from=search&seid=1038534937018518859&spm_id_from=333.337.0.0',
            'origin': 'https://live.bilibili.com',
            'cookie': '使用自己的cookie'
        }
        result=requests.post(url=url,data=data,headers=headers)
        print(result.text)
if __name__=='__main__':
    send()

 借鉴自:嗨学编程

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
以下是使用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站直播间的房间号,代码自动获取该直播间的真实流媒体地址,然后连接到弹幕服务器并接收弹幕消息。在接收到弹幕消息后,可以根据自己的需要进行处理。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值