python - 如何从 youtube 页面获取 flv 文件

标签 python youtube

<分区>

如何从 Youtube 页面获取“flv”文件,例如:www.youtube.com/watch?v=T8YCSJpF4g4...有什么想法吗?

到目前为止我已经尝试过:

import urllib
import os
import sys

page=urllib.urlopen('http://www.youtube.com/watch?v=FuLDIgfPae8')
result = page.read()
#result=open("test.html").read()
print result
startindex = result.index("var swfArgs")
result = result[startindex:]
endindex=result.index("};")
result=result[:endindex]
result =  result.split(",")
get={}
print result
def download(url,output):
    """Copy the contents of a file from a given URL to a local file."""   
    webFile = urllib.urlretrieve(url,output+".flv")

for line in result:
    if "video_id" in line or "\"t\"" in line :
        v,vnum = line.replace("\"","").split(":")
        get[v.strip()]=vnum.strip()

dload = "http://www.youtube.com/get_video?video_id=%s&t=%s" % ( get['video_id'],get['t'])

try :
    download(dload,get['video_id'])
except Exception,e:
    print "Error: ",e

但这给了我一个错误:

startindex = result.index("var swfArgs")
ValueError: substring not found

我不确定如何修复此错误。

@icktoofay

我将如何重新创建所有这些请求?:

enter image description here

请帮帮我,我快死了。

最佳答案

您当前代码的问题是,var swfArgs 确实没有出现在该网页的源代码中。 YouTube 会不断更改其页面,因此我将告诉您如何找到您需要做的事情,而不是 YouTube 当前所做的事情。

在具有良好调试工具的浏览器中打开页面。例如,带有 Firebug 的 Firefox 或带有开发者工具的 Chrome。打开开发人员工具并转到网络选项卡或您的工具调用的任何名称。

Chrome 的开发者工具网络标签:
Chrome developer tools network tab

Firebug 的开发者工具网络选项卡:
Firebug network tab

找到 FLV。在 URL 和其他相关位置查找参数。查看网页上是否有任何数据。还要查看是否有任何数据来自其他请求,这些请求可能具有网页上的参数。

只需用 Python 重新创建请求,您将获得 FLV,就像 YouTube 的官方网站获取它一样。

关于python - 如何从 youtube 页面获取 flv 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7694213/

相关文章:

android - Youtube Player与Android App中的缩略图集成

python - Object-C 中的 MD5 不匹配结果

python - Keras - Loss 和 Metric 的计算方式不同?

python - SQLAlchemy 从 TypeDecorator 获取原始 SQL 值

python - 根据字母的对称性创建镜像词

python - Azure Functions 中的多重处理

php - 视频发布后,YouTube会通知URL吗?

Youtube API 获取视频?

iphone - 在 Objective-C 中以编程方式检测 youtube 视频链接

javascript - 为什么 YouTube JavaScript Player API 打开与我的代码中的 URL 不同的 URL,并且只播放播放列表的第一个视频?