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 相关文章推荐
使用XML库的方式,实现RPC通信的方法(推荐)
Jun 14 Python
python在文本开头插入一行的实例
May 02 Python
python使用matplotlib模块绘制多条折线图、散点图
Apr 26 Python
如何用Python来理一理红楼梦里的那些关系
Aug 14 Python
ubuntu上安装python的实例方法
Sep 30 Python
Pycharm中切换pytorch的环境和配置的教程详解
Mar 13 Python
python实现ftp文件传输功能
Mar 20 Python
解决pyqt5异常退出无提示信息的问题
Apr 08 Python
Pycharm学生免费专业版安装教程的方法步骤
Sep 24 Python
python 通过pip freeze、dowload打离线包及自动安装的过程详解(适用于保密的离线环境
Dec 14 Python
4种非常实用的python内置数据结构
Apr 28 Python
pytorch 一行代码查看网络参数总量的实现
May 12 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
安健A254立体声随身听的分析与打磨
2021/03/02 无线电
PHP处理postfix邮件内容的方法
2015/06/16 PHP
JSON字符串传到后台PHP处理问题的解决方法
2016/06/05 PHP
同一个表单 根据要求递交到不同页面的实现方法小结
2009/08/05 Javascript
JQuery打造PHP的AJAX表单提交实例
2009/11/03 Javascript
JavaScript字符串对象fromCharCode方法入门实例(用于把Unicode值转换为字符串)
2014/10/17 Javascript
TypeScript具有的几个不同特质
2015/04/07 Javascript
XML、HTML、CSS与JS的区别整理
2016/02/18 Javascript
jQuery使用zTree插件实现树形菜单和异步加载
2016/02/25 Javascript
微信小程序开发背景图显示功能
2018/08/08 Javascript
layui的表单验证支持ajax判断用户名是否重复的实例
2019/09/06 Javascript
jQuery实现图片随机切换、抽奖功能(实例代码)
2019/10/23 jQuery
Openlayers实现点闪烁扩散效果
2020/09/24 Javascript
[49:21]完美世界DOTA2联赛循环赛 Ink Ice vs LBZS BO2第二场 11.05
2020/11/06 DOTA
python Socket之客户端和服务端握手详解
2017/09/18 Python
详解Django-auth-ldap 配置方法
2018/12/10 Python
详解django中url路由配置及渲染方式
2019/02/25 Python
python中数字是否为可变类型
2020/07/08 Python
python如何调用百度识图api
2020/09/29 Python
python之openpyxl模块的安装和基本用法(excel管理)
2021/02/03 Python
CSS3 绘制BMW logo实的现代码
2013/04/25 HTML / CSS
浅谈amaze-ui中datepicker和datetimepicker注意的几点
2020/08/21 HTML / CSS
韩国三星旗下的一家超市连锁店:Home Plus
2016/07/30 全球购物
Vans(范斯)新西兰官方网站:美国原创极限运动品牌
2020/09/19 全球购物
党章学习思想汇报
2014/01/14 职场文书
理工学院学生自我鉴定
2014/02/23 职场文书
毕业生自荐信如何写
2014/03/24 职场文书
幼儿园中班上学期评语
2014/04/18 职场文书
保研推荐信格式
2015/03/25 职场文书
入学证明
2015/06/23 职场文书
python小程序之飘落的银杏
2021/04/17 Python
python实现图片批量压缩
2021/04/24 Python
iOS 16进一步确认,一共支持16款iPhone
2022/04/28 数码科技
Mysql 一主多从的部署
2022/05/20 MySQL
MySQL数据库如何查看表占用空间大小
2022/06/10 MySQL
Win10开机修复磁盘错误怎么跳过?Win10关闭开机磁盘检查的方法
2022/09/23 数码科技