gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 00:58:51 26 4
gpt4 key购买 nike

我正在尝试为字幕抓取 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 来捕获它,因为我有很多链接需要遍历并重复该过程。您可以通过下面的代码看出,我尝试加入延迟时间来等待页面加载,但没有成功。

import os
import codecs
import sys
import requests
from bs4 import BeautifulSoup

channel = 'https://www.youtube.com/timedtext_editor?action_mde_edit_form=1&v=dto4koj5DTA&lang=en'
s = requests.Session()
time.sleep(5)
# s.headers['User-Agent'] = USER_AGENT
r = s.get(channel)
time.sleep(5)
html = r.text
soup = BeautifulSoup(html, 'lxml')

for i in soup.find_all('div'):
print(i)

请指教。

最佳答案

我尝试使用 requestslxml 抓取页面,但是在遍历脚本中的标签时,我在页面上找不到字幕(textarea 标签位于字幕不会出现在脚本中)这可能是因为 YouTube 使用 javascript 加载字幕。

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

  • 使用 selenium 抓取字幕(你说过你不想这样做。)

  • 通过浏览器查看 POST 和 GET 请求,并尝试将所需的请求参数发送到您跟踪 javascript 的 url(如果身份验证或动态 token 用于参数,可能并不总是有效)

  • 使用 youtube-dl 下载字幕。

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

youtube-dl 是一个命令行工具,但是你也可以根据github上的文档导入它。

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

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

话虽如此,您可以在 python 中创建一个函数来调用命令:

import os

def download_subs(video_url, lang="en"):
cmd = [
"youtube-dl",
"--skip-download",
"--write-sub",
"--sub-lang",
lang,
video_url
]

os.system(" ".join(cmd))


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

download_subs(url)

或者,您可以直接从 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

...

...

关于python - 无法抓取 YouTube 视频的隐藏式字幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48125300/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com