从Python中的URL下载视频

eiee3dmh  于 2023-05-16  发布在  Python
关注(0)|答案(5)|浏览(134)

我正在尝试使用下面的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文件,但视频文件似乎存在一些问题。视频确实在我的本地系统中下载,但出现错误

gdx19jrr

gdx19jrr1#

在python3中

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

它为我工作,你可以在下面的link中看到脚本

thtygnil

thtygnil2#

您可以使用库请求:

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
mwecs4sa

mwecs4sa3#

如果你可以访问urllib2,你可以在url上使用urlopen,这将给予一个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)
qrjkbowd

qrjkbowd4#

要下载Coursera课程的视频,您需要:
1.登录到www.example.com的会话Coursera.org
1.我在www.example.com注册了这门课Coursera.org
一旦你这样做,你可以下载视频后,您的HTTP客户端验证(与您的用户名/密码),并有一个有效的会话。

qojgxg4l

qojgxg4l5#

要下载占用内存最少的文件,可以使用smart_open
代码变得非常pythonic,它一次只在内存中保留文件的一小部分:

# pip install smart_open[http]
from smart_open import open

def stream_uri(uri_in, uri_out, chunk_size=1 << 18):  # 256kB chunks
    """Write from uri_in to uri_out with minimal memory footprint."""
    with open(uri_in, "rb") as fin, open(uri_out, "wb") as fout:
        while chunk := fin.read(chunk_size):
            fout.write(chunk)

# from https to disk
stream_uri("https://ik.imagekit.io/demo/sample-video.mp4", "./sample-video.mp4")
# from s3 to ftp
stream_uri("s3://bucket1/example.pdf", "ftp://192.168.178.1:21/example.pdf")

它们支持一系列可以在这里组合的协议。

相关问题