如何解决使用Python或浏览器复制POST请求
因此,这里有一个巴西政府网站(https://www.rad.cvm.gov.br/ENET/frmConsultaExternaCVM.aspx),带有用于发送此POST请求的咨询按钮(“领事”):
Request URL: https://www.rad.cvm.gov.br/ENET/frmConsultaExternaCVM.aspx/ListarDocumentos
Request Method: POST
Payload: { dataDe: '',dataAte: '',empresa: '',tipoDocumento: '-2',dataReferencia: '',categoria: '-1',tipo: '-1',especie: '-1',periodo: '0',horaIni: '',horaFim: '',palavraChave:'',ultimaDtRef:'false',tipoEmpresa:'0'}
并返回此JSON作为响应:
{"d":{"__type":"Bovespa.Formularios.Shell.Presenters.RetornoTelaGerenciadorDocumento","temErro":false,"expirouSessao":false,"msgErro":"","dados":"02504-6$&D1000 VAREJO FARMA PARTICIPAÇÕES S.A.$&Dados Eco
...
我正在尝试创建一个Python代码,该代码发送请求以获取上述响应。
import requests
payload = { 'dataDe': '','dataAte': '','empresa': '','tipoDocumento': '-2','dataReferencia': '','categoria': '-1','tipo': '-1','especie': '-1','periodo': '0','horaIni': '','horaFim': '','palavraChave':'','ultimaDtRef':'false','tipoEmpresa':'0'}
r = requests.post("https://www.rad.cvm.gov.br/ENET/frmConsultaExternaCVM.aspx/ListarDocumentos",params=payload,verify=False)
print(r.text)
# Tried with JSON Decoder as well but no success
# data=r.json()
# print(data)
但是这将返回网页的HTML内容,而不是所需的响应。如果将“ requests.post”更改为“ requests.get”,结果相同。
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1"><link href="App_Themes/CVM/Calendar/Skins/CVM/Calendar.css"
...
我也尝试在浏览器中发送GET请求,但没有成功:
https://www.rad.cvm.gov.br/ENET/frmConsultaExternaCVM.aspx/ListarDocumentos?dataDe=&dataAte=&empresa=&tipoDocumento=-2&dataReferencia=&categoria=-1&tipo=-1&especie=-1&periodo=0&horaIni=&horaFim=&palavraChave=&ultimaDtRef=false&tipoEmpresa=0
我很感谢任何建议。
解决方法
在json=
中使用requests.post()
参数来获取数据:
import json
import requests
payload = { 'dataDe': '','dataAte': '','empresa': '','tipoDocumento': '-2','dataReferencia': '','categoria': '-1','tipo': '-1','especie': '-1','periodo': '0','horaIni': '','horaFim': '','palavraChave':'','ultimaDtRef':'false','tipoEmpresa':'0'}
r = requests.post("https://www.rad.cvm.gov.br/ENET/frmConsultaExternaCVM.aspx/ListarDocumentos",json=payload,verify=False)
data = r.json()
# print to screen:
print(json.dumps(data,indent=4))
打印:
{
"d": {
"__type": "Bovespa.Formularios.Shell.Presenters.RetornoTelaGerenciadorDocumento","temErro": false,"expirouSessao": false,"msgErro": "","dados": "02504-6$&D1000 VAREJO FARMA PARTICIPA\u00c7\u00d5ES S.A.$&Dados Econ\u00f4mico-Financeiros$&Press-release$&<spanOrder>Divulga\u00e7\u00e3o de
...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。