urllib.request 下载文件到本地

作者: gavin 分类: Python,Python基础 发布时间: 2022-01-13 20:21

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