本文介绍如何使用requests下载保存文件及中文乱码转换输出
一般下载都需要使用到get请求
代码如下:
# coding=utf-8
# 导入requests包
import requests
import time
url = "" # 下载文件的url
headers = {} # 请求头参数
data = {} # params传参,如有才写
path = ""存放文件路径
r = requests.get(url, headers=headers, params=data, stream=True, verify=False)
if r.status_code == 200:
# 获取content下载数据源
content = r.content
# 获取返回头携带的文件名
h = r.headers['Content-Disposition'] # 获取返回头,文件名字段
s1 = h.split('=')[1] # 按=号切割,取文件名 "导出表1606361433628.xls"
s2 = s1.split('"')[1] #按双引号切割,去掉前后双引号 导出表1606361330852.xls
f = s2.encode('raw_unicode_escape') # 使用'raw_unicode_escape'编码
# print(f) # b'\xc3\xa5\xc2\xaf\xc2\xbc\xc3\xa5\xc2\x87\xc2\xba\xc3\xa8\xc2\xa1\xc2\xa81606361433628.xls'
file_name = f.decode('utf-8') # 再用utf-8 解码
# print(file_name) # 导出表1606362037539.xls
# 拼接存放文件路径
file_path = path + file_name) # 文件名可自定义,如自定义上一步获取文件名不需要
# 打开文件写入
with open(file_path, 'wb') as f:
f.write(content)