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 with statement 进行文件操作指南
Aug 22 Python
Python 检查数组元素是否存在类似PHP isset()方法
Oct 14 Python
Python中MySQLdb和torndb模块对MySQL的断连问题处理
Nov 09 Python
详解Python中的Descriptor描述符类
Jun 14 Python
Python实现手写一个类似django的web框架示例
Jul 20 Python
anaconda如何查看并管理python环境
Jul 05 Python
Python Web版语音合成实例详解
Jul 16 Python
解决python中的幂函数、指数函数问题
Nov 25 Python
带你彻底搞懂python操作mysql数据库(cursor游标讲解)
Jan 06 Python
python模拟斗地主发牌
Apr 22 Python
python 实现朴素贝叶斯算法的示例
Sep 30 Python
Python经典五人分鱼实例讲解
Jan 04 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 Stream_*系列函数
2010/08/01 PHP
php中inlcude()性能对比详解
2012/09/16 PHP
PHP实现HTML生成PDF文件的方法
2014/11/07 PHP
详解WordPress中用于合成数组的wp_parse_args()函数
2015/12/18 PHP
php英文单词统计器
2016/06/23 PHP
JavaScript的removeChild()函数用法详解
2015/12/27 Javascript
Bootstrap弹出带合法性检查的登录框实例代码【推荐】
2016/06/23 Javascript
解决JS内存泄露之js对象和dom对象互相引用问题
2017/06/25 Javascript
Vue.js表单标签中的单选按钮、复选按钮和下拉列表的取值问题
2017/11/22 Javascript
关闭Vue计算属性自带的缓存功能方法
2018/03/02 Javascript
Element-UI踩坑之Pagination组件的使用
2018/10/29 Javascript
微信小程序实现炫酷的弹出式菜单特效
2019/01/28 Javascript
Layui 解决表格异步调用后台分页的问题
2019/10/26 Javascript
VUE+elementui组件在table-cell单元格中绘制微型echarts图
2020/04/20 Javascript
Vue自定义表单内容检查rules实例
2020/10/30 Javascript
python学习之第三方包安装方法(两种方法)
2015/07/30 Python
Python使用QQ邮箱发送Email的方法实例
2017/02/09 Python
浅析Python中return和finally共同挖的坑
2017/08/18 Python
Python实现k-means算法
2018/02/23 Python
Python pymongo模块常用操作分析
2018/09/01 Python
Python中asyncio模块的深入讲解
2019/06/10 Python
python列表每个元素同增同减和列表元素去空格的实例
2019/07/20 Python
django有外键关系的两张表如何相互查找
2020/02/10 Python
在Python3.74+PyCharm2020.1 x64中安装使用Kivy的详细教程
2020/08/07 Python
Space NK英国站:英国热门美妆网站
2017/12/11 全球购物
存储过程的优点有哪些
2012/09/27 面试题
影视艺术学院毕业生自荐信
2013/11/13 职场文书
女娲补天教学反思
2014/02/05 职场文书
《曹刿论战》教学反思
2014/03/02 职场文书
租房协议书范文
2014/08/20 职场文书
2014银行授权委托书样本
2014/10/04 职场文书
2014年幼儿园学期工作总结
2014/12/05 职场文书
天下第一关导游词
2015/02/06 职场文书
纪律委员竞选稿
2015/11/19 职场文书
创业计划书之牛肉汤快餐店
2019/10/08 职场文书
Python中文分词库jieba(结巴分词)详细使用介绍
2022/04/07 Python