首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用Beautifulsoup4和Python3在网上抓取youtube的转录本

如何用Beautifulsoup4和Python3在网上抓取youtube的转录本
EN

Stack Overflow用户
提问于 2016-12-01 23:14:46
回答 1查看 2.7K关注 0票数 0

这是我目前的密码。我不知道我做错了什么。也许我在html中的挖掘不够深入,没有给Beautifulsoup正确的标签吗?目前,我的代码正在返回空白。

代码语言:javascript
复制
from bs4 import BeautifulSoup
from urllib.request import urlopen
html = urlopen("https://www.youtube.com/watch?v=5_zrHZdhaBU")
soup = BeautifulSoup(html,'html.parser')
nameList = soup.findAll("div", {"id": "cp-2"})
for name in nameList:
    print(name.get_text())

这是我检查过的代码。我正试着让Python回到我身边,“但它被解开了”

代码语言:javascript
复制
<div id="cp-2" class="caption-line" data-time="7.54"><div class="caption-line-time">0:07</div><div class="caption-line-text">but it was untucked.</div></div>

*编辑

通过单击“共享”按钮旁边的“更多”按钮,可以找到代码。然后你点击成绩单,你会看到所有的文本。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-02 11:25:55

是的,它是通过Ajax加载的:打开页面,然后打开Network选项卡,按开始时间对请求进行排序(首先是最新的请求),然后单击Youtube上的CC按钮。

如果获得api/timedtext请求,则响应为XML。这里是抄本的全部网址:

langs%2Ccaps%2Cv%2Cexpire&lang=en&fmt=srv3

不过,我不知道这个URL是如何生成的。这需要对复杂的YouTube脚本进行研究,等等。

编辑: This answer帮了我。您可以省略这些参数中的大多数,只需使用以下URL:

代码语言:javascript
复制
https://www.youtube.com/api/timedtext?&v=5_zrHZdhaBU&lang=en

或者一般情况下:

代码语言:javascript
复制
https://www.youtube.com/api/timedtext?&v={video_id}&lang={language_code}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40922144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档