【问题标题】:How to get the flv file from a youtube page [closed]如何从 youtube 页面获取 flv 文件 [关闭]
【发布时间】:2011-12-03 09:34:54
【问题描述】:

您如何从 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

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

请帮帮忙,这让我死了。

【问题讨论】:

  • 这个问题应该迁移到webapps.stackexchange.com
  • @haimg:我相信 WebApps 是为 Web 应用程序的用户服务的,而不是试图编写程序与他们交互的人。
  • 我知道一种方法,但我认为在我帮助您之前,您需要更加努力地解决您的问题。
  • @P'sao:很抱歉,我错过了您问题上的“python”标签。没有它,看起来你想从 youtube 下载一些东西。确实,请提供更多详细信息。
  • 我刚刚编辑了它 :) 我不确定我还能提供什么其他详细信息

标签: python youtube


【解决方案1】:

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

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

Chrome 的开发者工具网络标签:

Firebug 的开发者工具网络标签:

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

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

【讨论】:

    【解决方案2】:

    我建议看看youtube-dl。这是取自其网站的简短描述:

    youtube-dl 是一个小型命令行程序,用于下载视频 YouTube.com 和其他一些网站。它需要 Python 解释器, 版本 2.x(x 至少为 5),它不是特定于平台的。它 应该可以在您的 Unix 机器、Windows 或 Mac OS X 中工作。 发布到公共领域,这意味着您可以修改它, 重新分发它或随心所欲地使用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-15
      • 2011-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多