urllib.request 下载文件到本地
一、urllib.request基础
urllib.request.urlopen() 模拟浏览器访问页面,并以utf-8读取展示页面
import urllib.request # 1.定义一个url url = 'http://www.baidu.com' # 2.模拟浏览器发起请求 response响应 # response = urllib.request.urlopen(url) # 3.获取响应中的页面的源码 content 内容 # content = response.read().decode('utf-8') # 4.打印数据 # print(content)
二、带进度进度展示的下载
urllib.request.urlretrieve(下载目标, 存储目标, 回调方法) 下载文件方法
import urllib.request import sys import ssl # 1.声明不验证ssl证书 ssl._create_default_https_context = ssl._create_unverified_context # 2.定义一个数组数据 datalist = [ {"url": "//images.pixieset.com/54907824/691bedd8ae2a5784939a30110b81df31-xxlarge.jpg"}, {"url": "//images.pixieset.com/54907824/0852805741730181830eedcbc5358cb1-xxlarge.jpg"} ] # 3.定义一个下载路径 path = "/Users/gavin/PycharmProjects/DownloadFiles/download/" # 4.定义一个回调方法,展示下载进度百分比 def _progress(block_num, block_size, total_size): '''回调函数 @block_num: 已经下载的数据块 @block_size: 数据块的大小 @total_size: 远程文件的大小 ''' sys.stdout.write('\r>> Downloading %s %.1f%%' % (filename, float(block_num * block_size) / float(total_size) * 100.0)) sys.stdout.flush() # 5.开始下载操作 for data in datalist: url = 'https:' + data["pathXxlarge"] filename = url.split('/')[-1] urllib.request.urlretrieve(url, path + filename, _progress) print()