当前位置 : 主页 > 编程语言 > python >

搜索关键词采集YouTube视频字幕

来源:互联网 收集:自由互联 发布时间:2022-06-18
使用python采集YouTube视频字幕 本篇博客纯干货!!! 最近接到leader安排的采集任务,抓取采集世界上最大的视频共享网站YouTube的视频字幕。 分析目标网站,开始抓包 当我打开视频 链接


使用python采集YouTube视频字幕

本篇博客纯干货!!!

最近接到leader安排的采集任务,抓取采集世界上最大的视频共享网站YouTube的视频字幕。

分析目标网站,开始抓包

当我打开视频链接点击显示字幕按钮时,通过浏览器抓取到timedtext这样的一个请求,而返回的内容正式我想要的数据——每个时间点的字幕。

搜索关键词采集YouTube视频字幕_字幕

分析该URL有视频ID、signature、key、expire等参数,每次发生变化的是signature,开始通过js突破该参数。过程这里不做详细描述。

终于在该视频源代码中找到这样一段js

"playerCaptionsTracklistRenderer\":{\"captionTracks\":[{\"baseUrl\":\"https:\/\/www.youtube.com\/api\/timedtext?xorp=True\\u0026signature=DC15F46CCF5A97B616CFF6EA13626BC34E24B848.454E61B37E4E1AE37BF2C83F311D8EB362B165AA\\u0026hl=zh-CN\\u0026sparams=caps%2Cv%2Cxoaf%2Cxorp%2Cexpire\\u0026expire=1566051203\\u0026caps=\\u0026key=yttt1\\u0026xoaf=1\\u0026v=7j0xuYKZO4g\\u0026lang=en\\u0026name=English\",

原来一直费尽心思想解析的URL暴露在源码中了,格式化代码后知道他是一段json串,很多视频信息都在该json中,如发布时间、标题、简介、点击量等;心中的小激动?

接下来,通过正则匹配需要的URL

ytplayer_config = json.loads(re.search('ytplayer.config\s*=\s*([^\n]+?});', response.text).group(1))
caption_tracks = json.loads(ytplayer_config['args']['player_response'])['captions']['playerCaptionsTracklistRenderer']['captionTracks']
for c in caption_tracks:
url = c["baseUrl"] # 在url后拼接上&tlang=zh-Hans返回的字幕为中文,&tlang=en-Hans返回的字幕为英文

最后得到字幕URL通过python请求后解析拿到字幕数据。大功告成

有字幕的视频才会有baseUrl这个值,没有字幕的视频这样取会报异常的哦~

搜索关键词采集YouTube视频字幕_爬虫_02

YouTube列表翻页

字幕解析出来了,下一步批量采集需要的视频字幕。

需求:

通过搜索采集结果中所有字幕。

分析:

视频翻页是基于ajax请求来的,源码里面的信息始终都是第一页的数据,
ok 那既然这样,我们来分析ajax请求,我喜欢用谷歌浏览器,打开开发者工具,network,来抓包。
鼠标一直往下拉,会自动请求,是个post请求,一看就是返回的视频信息。

搜索关键词采集YouTube视频字幕_YouTube_03

看到这里很高兴,离胜利已经不远了。但,我们先来看下headers 以及发送的post参数,看了之后 就一句 wtf。。。

搜索关键词采集YouTube视频字幕_字幕_04

一万个羊驼在奔腾,我把那些加密的参数都标记了,前后端交互,既然是发过去的数据,那肯定已经在前端产生了,至于什么产生的,那就要一步一步分析来了,最后。对 我没有分析出来。。。刚开始挨着挨查看js文件,参数的确是在js里面产生的,但。。。tmd写的太复杂了。。。能力有限,解决不了。难道就这样放弃了吗。肯定不会,不然 各位也不会看到这篇文章了。于是,我灵机一动,​​在地址栏里面输入&page=​​结果,真的返回视频了。。。卧槽 哈哈哈,我当时真是很开心呢。因为前端页面上并没有翻页按钮,没想到竟然还真的可以这样翻页。。。哈哈

搜索关键词采集YouTube视频字幕_YouTube_05

接下来就是匹配每页的视频链接访问 – 获取字幕

完活 交差 回家 吃饭 睡觉咯

感谢观看!



上一篇:用python玩转视频帧率
下一篇:没有了
网友评论