我正在尝试使用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文件,但视频文件似乎存在一些问题。视频会在我的本地系统中下载,但有错误
答案 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课程下载该视频,您需要:
完成此操作后,您可以在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