#要下载的链接地址
img_url = ‘https://imgsa.baidu.com/forum/w%3D580/sign=adc0a68a97504fc2a25fb00dd5dfe7f0/873df8dcd100baa14fff6d394b10b912c9fc2e64.jpg’

文件的方式保存下载的图片

response = request.urlopen(img_url)
 #读取返回的内容
 img = response.read()
 with open(‘baidu/1.jpg’,‘wb’) as f:
     #将图片内容以二进制写入
     f.write(img)
方法三(使用下载函数下载视频并输出下载进度)
from urllib import request
base_url = ‘https://f.us.sinaimg.cn/001KhC86lx07laEy0PtC01040200y8vC0k010.mp4?label=mp4_hd&template=640x360.28&Expires=1528689591&ssig=qhWun5Mago&KID=unistore,video’
 #下载进度函数
 def report(a,b,c):
     ‘’’
     a:已经下载的数据块
     b:数据块的大小
     c:远程文件的大小
     ‘’’
     per = 100.0 * a * b / c
     if per > 100:
         per = 100
     print (‘%.2f%%’ % per)
 #使用下载函数下载视频并调用进度函数输出下载进度
 request.urlretrieve(url=base_url,finename=‘weibo/1.mp4’,reporthook=report,data=None)
说明:


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