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()


