我正在try 使用以下请求下载文件

url = 'https://totoro.banrep.gov.co/analytics/saw.dll?Go&ViewID=o%3ago%7er%3areport&Action=Download&SearchID=g8of6g3fbae0jp7va1ru23h9rm&ViewName=compoundView%211&fmapId=I5IMHw&ViewState=d8lnokl6jm050tk65k2v7mq8k6&ItemName=1.2.5.IPC_Serie_variaciones&path=%2fshared%2fSeries%20Estad%c3%adsticas_T%2f1.%20IPC%20base%202018%2f1.2.%20Por%20a%c3%b1o%2f1.2.5.IPC_Serie_variaciones&Format=excel2007&Extension=.xlsx&bNotSaveCommand=true'
username = 'publico'
password = 'publico123'
payload = {'NQUser': username, 'NQPassword': password}
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36'}

respuesta = requests.get(url, headers = headers, data = payload)
xls = pd.ExcelFile(BytesIO(respuesta .content))

然而,我得到的请求是未经授权的,我不明白为什么用户名和密码都是正确的.在这种情况下我能做什么?我需要什么参数吗?

Note:使用selenium来模拟用户对我来说不是一个选项,因为下载我需要添加在Azure函数中.

我真的很感谢你的帮助!

我希望通过使用所提供的代码,我可以得到我需要的数据,但我得到了未经授权的请求

推荐答案

试试这个.在这里,我将文件保存到磁盘上进行测试,但您可以修改代码.

旁注:永远不要,EVER,在网络上发布证书.这里的信息看起来不是很敏感,但如果有一个密码,但弱,它的原因,我应该无法下载文件.

import requests

session_url = "https://totoro.banrep.gov.co/analytics/saw.dll?Logon"
file_url = "https://totoro.banrep.gov.co/analytics/saw.dll?Go&ViewID=o%3ago%7er%3areport&Action=Download&SearchID=g8of6g3fbae0jp7va1ru23h9rm&ViewName=compoundView%211&fmapId=I5IMHw&ViewState=d8lnokl6jm050tk65k2v7mq8k6&ItemName=1.2.5.IPC_Serie_variaciones&path=%2fshared%2fSeries%20Estad%c3%adsticas_T%2f1.%20IPC%20base%202018%2f1.2.%20Por%20a%c3%b1o%2f1.2.5.IPC_Serie_variaciones&Format=excel2007&Extension=.xlsx&bNotSaveCommand=true"
payload = {"NQUser": "publico", "NQPassword": "publico123"}

headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"}

session = requests.Session()

login_resp = session.post(session_url, headers=headers, data=payload)
file_resp = session.get(file_url, headers=headers)

with open("file.xlsx", "wb") as f:
    f.write(file_resp.content)

session.close()

Python相关问答推荐

当密钥是复合且唯一时,Pandas合并抱怨标签不唯一

如何根据另一列值用字典中的值替换列值

Pandas实际上如何对基于自定义的索引(integer和非integer)执行索引

比较2 PD.数组的令人惊讶的结果

Python json.转储包含一些UTF-8字符的二元组,要么失败,要么转换它们.我希望编码字符按原样保留

删除最后一个pip安装的包

有症状地 destruct 了Python中的regex?

无法定位元素错误404

将tdqm与cx.Oracle查询集成

如何将多进程池声明为变量并将其导入到另一个Python文件

Django REST Framework:无法正确地将值注释到多对多模型,不断得到错误字段名称字段对模型无效'<><>

根据列值添加时区

不允许访问非IPM文件夹

手动设置seborn/matplotlib散点图连续变量图例中显示的值

为什么常规操作不以其就地对应操作为基础?

Numpyro AR(1)均值切换模型抽样不一致性

如何使用正则表达式修改toml文件中指定字段中的参数值

你能把函数的返回类型用作其他地方的类型吗?'

高效生成累积式三角矩阵

具有不同坐标的tkinter canvs.cocords()和canvs.moveto()