Python爬虫 bilibili视频弹幕提取过程详解


Posted in Python onJuly 31, 2019

两个重要点

1.获取弹幕的url是以 .xml 结尾

2.弹幕url的所需参数在视频url响应的 javascript 中

先看代码

import requests
from lxml import etree
import re
# 使用手机UA
headers = {
  "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1"
}
# 视频url
video_url = "https://m.bilibili.com/video/av37834086.html"
html = requests.get(url=video_url, headers=headers).content.decode('utf-8')
# 获取弹幕url的参数
cid = re.findall(r"comment: '//comment.bilibili.com/' \+ (.*?) \+ '.xml',", html)
url = "https://comment.bilibili.com/" + cid[0] + ".xml"
print(url)
response = requests.get(url, headers=headers)
html = response.content
xml = etree.HTML(html)
# 提取数据
str_list = xml.xpath("//d/text()")
# 写入文件
with open('bibi_xuxubaobao.txt', 'w', encoding='utf-8') as f:
  for line in str_list:
    f.write(line)
    f.write('\n')

先找到弹幕的url,以.xml结尾,所以先找到这串数字所在的位置,并获取这串数字发起第二次请求

Python爬虫 bilibili视频弹幕提取过程详解

而这串数字就在 第一次请求的响应的JavaScript中,可以通过 re 正则表达式进行提取

Python爬虫 bilibili视频弹幕提取过程详解

接下来的工作就是获取弹幕url返回的所有弹幕数据,然后对响应进行数据处理。

代码示例中使用的是 lxml 进行获取。接着就是保存到个人本地文件中了

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python用字典统计单词或汉字词个数示例
Apr 22 Python
python进程管理工具supervisor使用实例
Sep 17 Python
Tensorflow中使用tfrecord方式读取数据的方法
Jun 19 Python
如何优雅地改进Django中的模板碎片缓存详解
Jul 04 Python
pycharm配置当鼠标悬停时快速提示方法参数
Jul 31 Python
详解Python中的format格式化函数的使用方法
Nov 20 Python
Python Websocket服务端通信的使用示例
Feb 25 Python
解决windows下python3使用multiprocessing.Pool出现的问题
Apr 08 Python
Django 解决model 反向引用中的related_name问题
May 19 Python
Pycharm 设置默认解释器路径和编码格式的操作
Feb 05 Python
pytorch 使用半精度模型部署的操作
May 24 Python
Python实现byte转integer
Jun 03 Python
Django实现跨域的2种方法
Jul 31 #Python
Django CSRF跨站请求伪造防护过程解析
Jul 31 #Python
在VS2017中用C#调用python脚本的实现
Jul 31 #Python
使用pip安装python库的多种方式
Jul 31 #Python
python实现几种归一化方法(Normalization Method)
Jul 31 #Python
python Django编写接口并用Jmeter测试的方法
Jul 31 #Python
python实现windows倒计时锁屏功能
Jul 30 #Python
You might like
PHP中将ip地址转成十进制数的两种实用方法
2013/08/15 PHP
php常用数学函数汇总
2014/11/21 PHP
PHP中Array相关函数简介
2016/07/03 PHP
Javascript调试工具(下载)
2007/01/09 Javascript
在js中单选框和复选框获取值的方式
2009/11/06 Javascript
jquery判断字符输入个数(数字英文长度记为1,中文记为2,超过长度自动截取)
2010/10/15 Javascript
js定义对象或数组直接量时各浏览器对多余逗号的处理(json)
2011/03/05 Javascript
50个比较实用jQuery代码段
2011/09/18 Javascript
简单的jquery拖拽排序效果实现代码
2011/09/20 Javascript
使用jquery选择器如何获取父级元素、同级元素、子元素
2014/05/14 Javascript
javascript 获取浏览器版本
2015/01/21 Javascript
jQuery实现高亮显示的方法
2015/03/10 Javascript
jQuery实现的简洁下拉菜单导航效果代码
2015/08/26 Javascript
JavaScript操作XML/HTML比较常用的对象属性集锦
2015/10/30 Javascript
用Angular实时获取本地Localstorage数据,实现一个模拟后台数据登入的效果
2016/11/09 Javascript
深入理解Javascript箭头函数中的this
2017/02/13 Javascript
jQuery制作input提示内容(兼容IE8以上)
2017/07/05 jQuery
使用Node.js实现简易MVC框架的方法
2017/08/07 Javascript
使用canvas进行图像编辑的实例
2017/08/29 Javascript
AngularJS 打开新的标签页实现代码
2017/09/07 Javascript
详解ES7 Decorator 入门解析
2019/02/18 Javascript
使用react context 实现vue插槽slot功能
2019/07/18 Javascript
Javascript实现秒表计时游戏
2020/05/27 Javascript
Js和VUE实现跑马灯效果
2020/05/25 Javascript
python实现计算倒数的方法
2015/07/11 Python
python二分查找算法的递归实现方法
2016/05/12 Python
Python中的self用法详解
2019/08/06 Python
如何在Django配置文件里配置session链接
2019/08/06 Python
运动会广播稿150字
2014/02/19 职场文书
资助贫困学生倡议书
2014/05/16 职场文书
亮剑精神演讲稿
2014/05/23 职场文书
银行会计主管岗位职责
2014/10/01 职场文书
餐厅收银员岗位职责
2015/04/07 职场文书
党支部对转正的意见
2015/06/02 职场文书
创业计划书介绍
2019/04/24 职场文书
CocosCreator入门教程之网络通信
2021/04/16 Javascript