无法抓取YouTube视频的隐藏字幕

2024-09-30 10:27:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在YouTube上搜索字幕。不幸的是,并不是所有的东西都按要求加载。我很想知道我哪里出错了。在

查询字符串:

https://www.youtube.com/timedtext_editor?action_mde_edit_form=1&v=Nxb2s2Mv6Pw&lang=en&bl=vmp&forceedit=captions&tab=captions

所以我发现这是唯一的Url-I.D。。。Nxb2s2Mv6Pw我可以相应地替换它。在

如果我运行下面的代码,它不会捕捉到我需要它定位的标记<textarea yt-uix-form-input-textarea ...>。在

我极力避免使用Selenium来捕获这一点,因为我有很多链接需要迭代和重复这个过程。从下面的代码可以看出,我尝试加入延迟时间来等待页面加载,但是什么也没有。在

^{pr2}$

请告知。在


Tags: 字符串代码httpsformcomyoutubewwwaction
1条回答
网友
1楼 · 发布于 2024-09-30 10:27:52

我尝试使用requestslxml来抓取页面,但是当我迭代脚本中的标记时,我找不到页面上的任何字幕(字幕所在的textarea标记在脚本中没有显示) 这很可能是因为YouTube使用javascript来加载字幕。在

Python的请求库不支持javascript。但是,您有几个选择:

  • 使用selenium来删除字幕(您说过您不想这样做。)

  • 查看POST并通过浏览器获取请求,并尝试将所需的请求参数发送到您跟踪javascript的url(如果使用了身份验证或参数使用了动态令牌,则可能不会始终有效)

  • 使用youtube-dl下载字幕。

    (这似乎是最简单/最可靠的方法。)

youtube-dl是一个命令行实用程序,但您也可以根据github上的文档导入它。在

有几种方法可以帮你解决这个问题。我将使用您在帖子中提到的视频作为示例:

youtube-dl  write-sub  skip-download  sub-lang en https://www.youtube.com/watch?v=Nxb2s2Mv6Pw

说到这里,您可以在python中创建一个函数来调用命令:

^{pr2}$

或者,您可以直接从python导入youtube_dl,然后从那里使用它:

import youtube_dl

def download_subs(url, lang="en"):
    opts = {
        "skip_download": True,
        "writesubtitles": "%(name)s.vtt",
        "subtitlelangs": lang
    }

    with youtube_dl.YoutubeDL(opts) as yt:
        yt.download([url])

url = "https://www.youtube.com/watch?v=Nxb2s2Mv6Pw"
download_subs(url)

这将在工作目录中创建一个名为

CNN 'Exposed' In Controversial Secret Video and Anita Sarkeesian's 'Punishment'...-Nxb2s2Mv6Pw.en.vtt

文件内容如下所示:

WEBVTT
Kind: captions
Language: en

00:00:00.000  > 00:00:01.500
You beautiful bastards

00:00:01.500  > 00:00:07.200
Hope you having a fantastic Tuesday welcome back to the Philip Defranco show and let's just jump into it the first thing

00:00:07.200  > 00:00:11.519
I want to talk about today one of the most requested stories of the day today is an update on the

00:00:11.889  > 00:00:13.650
Craziness out of Vidcon yesterday

00:00:13.650  > 00:00:19.350
Specifically we're talking about creator and panelist Anita Sarkeesian being on a panel calling someone in the crowd

...

...

相关问题 更多 >

    热门问题