从Python下载URL中的视频

时间:2015-06-20 10:48:05

标签: python download

我正在尝试使用Python中的以下代码下载视频。

import urllib
dwn_link = 'https://class.coursera.org/textanalytics-001/lecture/download.mp4?lecture_id=73'

file_name = 'trial_video.mp4' 
urllib.retrieve(dwn_link, file_name)

但是这段代码只下载了382 kb,视频打开时出现错误。

任何帮助?

编辑:我可以使用下载链接下载此页面中的所有.pdf文件,但视频文件似乎存在一些问题。视频会在我的本地系统中下载,但有错误

4 个答案:

答案 0 :(得分:11)

在python 3中,

import urllib.request
urllib.request.urlretrieve(url_link, 'video_name.mp4') 

它适用于我,您可以在以下link

中查看脚本

答案 1 :(得分:7)

如果您有权访问urllib2,则可以使用urlopen上的url,这会返回response个对象,您可以执行response.read()read数据,然后将其写入文件。

示例 -

import urllib2
dwn_link = 'https://class.coursera.org/textanalytics-001/lecture/download.mp4?lecture_id=73'

file_name = 'trial_video.mp4' 
rsp = urllib2.urlopen(dwn_link)
with open(file_name,'wb') as f:
    f.write(rsp.read())

如果需要下载视频,您还需要确保已对服务器进行了身份验证。

我不确定coursera.org使用哪种身份验证,但如果它的基本HTTP身份验证(我非常怀疑),您可以使用 -

password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
top_level_url = "http://class.coursera.org/"
password_mgr.add_password(None, top_level_url, username, password)

handler = urllib2.HTTPBasicAuthHandler(password_mgr)

# create "opener" (OpenerDirector instance)
opener = urllib2.build_opener(handler)

# use the opener to fetch a URL
opener.open(dwn_link)

答案 2 :(得分:3)

要从该Coursera课程下载该视频,您需要:

  1. 已登录Coursera.org会议
  2. 在Coursera.org注册了该课程
  3. 完成此操作后,您可以在HTTP客户端进行身份验证后(使用您的用户名/密码)下载视频并进行有效会话。

答案 3 :(得分:0)

您可以使用库请求:

def download_video_series(video_links): 

for link in video_links: 

    '''iterate through all links in video_links 
    and download them one by one'''

    # obtain filename by splitting url and getting  
    # last string 
    file_name = link.split('/')[-1]    

    print "Downloading file:%s"%file_name 

    # create response object 
    r = requests.get(link, stream = True) 

    # download started 
    with open(file_name, 'wb') as f: 
        for chunk in r.iter_content(chunk_size = 1024*1024): 
            if chunk: 
                f.write(chunk) 

    print "%s downloaded!\n"%file_name 

print "All videos downloaded!"
return