python --通过urlretrieve下载MP4文件

python --通过urlretrieve下载MP4文件
1、urlretrieve函数
python3中urllib.request模块提供的urlretrieve()函数。urlretrieve()方法直接将远程数据下载到本地。

		urlretrieve(url, filename=None, reporthook=None, data=None)
		参数url:下载链接地址
		参数filename:指定了保存本地路径(如果参数未指定,urllib会生成一个临时文件保存数据。)
		参数reporthook:是一个回调函数,当连接上服务器、以及相应的数据块传输完毕时会触发该回调,我们可以利用这个回调函数来显示当前的下载进度。
		参数data:指post导服务器的数据,该方法返回一个包含两个元素的(filename, headers) 元组,filename 表示保存到本地的路径,header表示服务器的响应头

代码如下:


import requests
from urllib.request import urlretrieve

class Url_mp4():
    """
    通过一条url获取.MP4
    """
    def __init__(self,url,filename="defualt.mp4"):
        """

        :param url: mp4下载地址
        :param filename: 文件名如."defualt.mp4"
        """
        self.url=url
        download_path = os.getcwd() +r"\download/"
        if not os.path.exists(download_path):
            os.mkdir(download_path)
        self.filename=download_path+filename


    def Schedule(self, a, b, c):
        """
        进度条
        :param a:
        :param b:
        :param c:
        :return:
        """
        per = 100.0 * a * b / c
        if per > 100:
            per = 1
        print("  " + "%.2f%% 已经下载的大小:%ld 文件大小:%ld" % (per, a * b, c) + '\r')

    def download(self):

            try:
                print("\"" + self.filename+ "\"" + "已经开始下载")
                urlretrieve(self.url, self.filename, reporthook=self.Schedule)
                print("\"" + self.filename + "\"" + "已经下载完成")
            except Exception as e:
                print(e)

    def run(self):
        self.download()



 if __name__ == '__main__':
     mp4=Url_mp4(url="http://v.stu.126.net/mooc-video/nos/mp4/2018/03/20/1008744423_c8f149213a154140ab6d98b326b33e55_shd.mp4 ",filename="ren.mp4")
     mp4.run()


猜你喜欢

转载自blog.csdn.net/huangwencai123/article/details/90645440