​​​​​​

  1. 网页分析

进入Network在众多响应中寻找和弹幕相关的API,

图3-1 B站直播房间页面的开发者工具界面preview

图3-2

在3-2展示的页面中可以查看到URL中有参数roomid,

在获取到url、相关参数以及headers后,通过requests.post()获取解析直播间弹幕。结果如图3-3:

图3-3 获取的部分弹幕

import requests

import time

import io,sys

  • 定义Danmu类

其中包含了url,请求头headers,POST传递的参数以及get_danmu()方法。在headers中可以增加更多header中的参数,增加不被反爬机制发现的可能性。关键代码如下:

def __init__(self):

# 弹幕url

self.url = 'https://api.live.bilibili.com/xlive/web-room/v1/dM/gethistory'

# 请求头

self.headers = {

'Host': 'api.live.bilibili.com',

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0',

}

# 定义POST传递的参数

self.data = {

'roomid': ' 21396545',

'csrf_token': '',

'csrf': '',

'visit_id': '',

}

  • 构造get_danmu()方法

def get_danmu(self):

# 获取直播间弹幕

html = requests.post(url=self.url, headers=self.headers, data=self.data).json()

# 解析弹幕列表

for content in html['data']['room']:

# 获取昵称

nickname = content['nickname']

# 获取发言

text = content['text']

# 获取发言时间

timeline = content['timeline']

# 记录发言

msg = timeline + ' ' + nickname + ': ' + text

print(msg)

# -*- encoding: utf-8 -*-
#@time:  2020/11/15 22:54
#@author: chenTao
#@file:  dnmu.pyimport requests
import time
import io,sys
# import
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030')class Danmu():def __init__(self):# 弹幕urlself.url = 'https://api.live.bilibili.com/xlive/web-room/v1/dM/gethistory'# 请求头self.headers = {'Host': 'api.live.bilibili.com','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0',}# 定义POST传递的参数self.data = {'roomid': '21396545','csrf_token': '','csrf': '','visit_id': '',}def get_danmu(self):# 获取直播间弹幕html = requests.post(url=self.url, headers=self.headers, data=self.data).json()# 解析弹幕列表for content in html['data']['room']:# 获取昵称nickname = content['nickname']# 获取发言text = content['text']# 获取发言时间timeline = content['timeline']# 记录发言msg = timeline + ' ' + nickname + ': ' + textprint(msg)if __name__ == '__main__':# 创建bDanmu实例bDanmu = Danmu()i = 1while i < 10:i += 1# 暂停0.5防止cpu占用过高time.sleep(0.5)# 获取弹幕bDanmu.get_danmu()

【爬虫】基于requests的B站直播实时弹幕爬取相关推荐

  1. b站直播消费记录爬取

    基于python的Appium进行b站直播消费记录爬取 前情提要 因工作需要,需要爬取相关数据,之前是爬取网页数据,可以用python的requests和Selenium进行爬取.但b站的直播消费数据 ...

  2. 基于scrapy的B站UP主信息爬取

    文章目录 思路分析 项目目录 代码 结果 思路分析 本次爬取的信息,包括UP主的mid.昵称.性别.头像的链接.个人简介.粉丝数.关注数.播放数.获赞数. 我的思路是,首先,选择一位B站比较火的UP主 ...

  3. python爬虫:requests+pyquery实现知乎热门话题爬取

    文章目录 前言 1. requests库的基本使用 2. pyquery库的基本使用 3. 爬取知乎热门话题 前言 有些东西想忘都忘不了,而有些却转背就忘了!这段时间忙于找工作和学习mysql,把爬虫 ...

  4. Crawler:基于requests库+urllib3库+伪装浏览器实现爬取抖音账号的信息数据

    Crawler:Python之Crawler爬取抖音账号的信息数据 目录 输出结果 代码设计 输出结果 更新-- 代码设计 from contextlib import closing import ...

  5. Python爬虫入门教程07:腾讯视频弹幕爬取

    前言

  6. 爬虫系列(1):极简爬虫——基于requests和re爬取安居客上海二手房价数据

    爬虫系列(1):极简爬虫--基于requests和re爬取安居客上海二手房价数据 入坑爬虫已经有一年多,一直想好好记录下从各位前辈和大佬处学到的技术,因此开了一个爬虫系列,想借此细致地介绍和演示其中的 ...

  7. 爬虫实战(一)—利用requests、mongo、redis代理池爬取英雄联盟opgg实时英雄数据

    概述 可关注微信订阅号 loak 查看实际效果. 代码已托管github,地址为:https://github.com/luozhengszj/LOLGokSpider 包括了项目的所有代码. 此篇文 ...

  8. 手把手教你实现『B站直播』弹幕实时分析

    大家好,我是阿辰,今天来教大家如何实现『B站直播』弹幕实时分析 思路:采集直播弹幕,然后通过情感分析,不同时间点的评论数,高频词统计 一.采集直播弹幕 首先在B站随意打开一个直播房间 https:// ...

  9. python实现弹幕_python实现b站直播自动发送弹幕功能

    基本开发环境 · Python 3.6 · Pycharm 相关模块使用 import requests import time from tkinter import * import random ...

最新文章

  1. Druid数据库连接池超时问题com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 1000, active 10
  2. html生成的超级链接预览功能,超链接特效
  3. java创建临时文件夹_如何在Java中创建一个临时目录/文件夹?
  4. 鹅厂是如何使用 Git 的?
  5. 打包的时候不把配置文件加进去_webpack区分developement和production打包
  6. 程序员的身体一定要好
  7. 一个可以使用的公用MQTT测试服务器
  8. [云炬创业基础笔记]第九章企业的法律形态测试6
  9. 数百个 HTML5 例子学习 HT 图形组件 – 拓扑图篇
  10. 定长掩码地址划分与VLSM子网划分
  11. Caused by: Parent package is not defined: json-default - [unknown location]
  12. 为何python不好找工作-为什么说Python不好找工作?原因在这里!
  13. JetBrains产品教育版申请
  14. 计算机联锁控制台操作演示,车站计算机联锁控制台的设计.doc
  15. 平衡小车—TB6612FNG与直流电机控制教程
  16. 软考网络工程师好考吗?怎么备考?
  17. 你中招了吗?《心理学常见误区》
  18. 零基础建站教程,教你最快速度做好企业网站
  19. 即时通讯开发之开源工程WebRTC原理
  20. win10邮箱怎么设置qq邮箱服务器地址,老鸟给你说win10自带邮件怎么添加qq邮箱的解决方式...

热门文章

  1. vue引入百度地图BMapGL,获取天地图根据名称显示坐标定位信息
  2. ATTCK靶场系列(六)
  3. 微信服务器在五秒内无响应多次请求去重
  4. 【Ubuntu】磁盘瘦身
  5. md5碰撞介绍及工具,并对百度网盘进行碰撞
  6. Android 自定义Preference 讲解
  7. 中国维生素E市场趋势报告、技术动态创新及市场预测
  8. 发邮件(通过发邮件 激活用户/激活链接)
  9. 在金融行业中数据挖掘的应用都有哪些(一)
  10. [Transformer] EdgeViTs: Competing Light-weight CNNs on Mobile Devices with Vision Transformers