如何使用 python 向登录门户发出下载文件的请求?

问题描述 投票:0回答:1

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

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

但是,我发现请求未经授权,并且我无法理解为什么用户名和密码都是正确的。在这种情况下我能做什么呢?有我需要的参数吗?

注意: 使用 selenium 来模拟用户对我来说不是一个选择,因为我需要在 azure 函数中添加下载。

我真的很感谢您的帮助!

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

python ajax python-requests request
1个回答
0
投票

试试这个。这里我将文件保存到磁盘进行测试,但您可以调整代码。

import requests
from requests.auth import HTTPBasicAuth

session_url = "https://totoro.banrep.gov.co/analytics/saw.dll?Go"
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)
© www.soinside.com 2019 - 2024. All rights reserved.