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之eval()函数危险性浅析
Jul 03 Python
低版本中Python除法运算小技巧
Apr 05 Python
Python使用Supervisor来管理进程的方法
May 28 Python
python使用clear方法清除字典内全部数据实例
Jul 11 Python
Python错误提示:[Errno 24] Too many open files的分析与解决
Feb 16 Python
Python正则表达式教程之二:捕获篇
Mar 02 Python
python实战之实现excel读取、统计、写入的示例讲解
May 02 Python
Django-migrate报错问题解决方案
Apr 21 Python
基于python实现地址和经纬度转换
May 19 Python
基于Python3读写INI配置文件过程解析
Jul 23 Python
如何Tkinter模块编写Python图形界面
Oct 14 Python
一行Python命令实现批量加水印
Apr 07 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
2006/12/23 PHP
PHP 验证码的实现代码
2011/07/17 PHP
jQuery的实现原理的模拟代码 -4 重要的扩展函数 extend
2010/08/03 Javascript
javascript中的关于类型转换的性能优化
2010/12/14 Javascript
JS 面向对象之神奇的prototype
2011/02/26 Javascript
EXTJS FORM HIDDEN TEXTFIELD 赋值 使用value不好用的问题
2011/04/16 Javascript
解决jquery的datepicker的本地化以及Today问题
2012/05/23 Javascript
将form表单中的元素转换成对象的方法适用表单提交
2014/05/02 Javascript
21个JavaScript事件(Events)属性汇总
2014/12/02 Javascript
JavaScript中的console.profile()函数详细介绍
2014/12/29 Javascript
JavaScript在浏览器标题栏上显示当前日期和时间的方法
2015/03/19 Javascript
jQuery获得子元素个数的方法
2015/04/14 Javascript
JS动态日期时间的获取方法
2015/09/28 Javascript
对jquery的ajax进行二次封装以及ajax缓存代理组件:AjaxCache详解
2016/04/11 Javascript
jQuery实现立体式数字滚动条增加效果
2016/12/21 Javascript
js实现无缝滚动图(可控制当前滚动的方向)
2017/02/22 Javascript
详解nodejs中express搭建权限管理系统
2017/09/15 NodeJs
浅谈用Webpack路径压缩图片上传尺寸获取的问题
2018/02/22 Javascript
JS实现深度优先搜索求解两点间最短路径
2019/01/17 Javascript
微信小程序实现单列下拉菜单效果
2019/04/25 Javascript
你不知道的 TypeScript 高级类型(小结)
2020/08/28 Javascript
[03:12]完美世界DOTA2联赛PWL DAY6集锦
2020/11/05 DOTA
[46:44]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD BO3 第二场 3月7日
2021/03/11 DOTA
python遍历数组的方法小结
2015/04/30 Python
Pytorch evaluation每次运行结果不同的解决
2020/01/02 Python
Python如何实现大型数组运算(使用NumPy)
2020/07/24 Python
python字符串拼接+和join的区别详解
2020/12/03 Python
10个python爬虫入门基础代码实例 + 1个简单的python爬虫完整实例
2020/12/16 Python
欧洲最大的滑雪假期供应商之一:Sunweb Holidays
2018/01/06 全球购物
惠而浦美国官网:Whirlpool.com
2021/01/19 全球购物
社团文化节策划书
2014/02/01 职场文书
仓库管理员岗位职责
2014/03/19 职场文书
食堂厨师岗位职责
2014/08/25 职场文书
2015年英语教研组工作总结
2015/05/23 职场文书
基于Python实现一个春节倒计时脚本
2022/01/22 Python