使用Python或浏览器复制POST请求

雷纳托·克鲁斯

因此,有一个巴西政府网站(https://www.rad.cvm.gov.br/ENET/frmConsultaExternaCVM.aspx),带有用于发送此POST请求的咨询按钮(“ Consultar”):

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

我感谢任何建议。

安德烈·凯斯利(Andrej Kesely)

使用json=in参数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 

...

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Fiddler使用python脚本复制浏览器操作

如何使用Python请求伪造浏览器访问?

在没有使用Python的浏览器的情况下,如何从HTML表单发出POST请求?

简单的POST请求可在Postman中使用,但不能在浏览器中使用

使用POST请求在AWS S3上基于浏览器的文件上传

Laravel 4:如何使用浏览器插件以JSON格式发送POST请求?

使用请求/请求从浏览器发布文件

如何使用 POST 请求实现浏览器下载 EXCEL 功能。或者,我应该不使用 POST 吗?

使用 Python 请求无法访问私人网站,而使用浏览器工作时

使用 JMeter 复制浏览器和用户行为

如何使用python请求登录浏览器提示符(下图)?

如何使用Python请求像我的浏览器一样跟随URL

使用python清除浏览器缓存

Python的请求库超时,但从浏览器获取响应

Python请求401错误,但URL在浏览器中打开

像浏览器一样的Python请求?

使用IO :: Socket :: SSL回答浏览器请求

无法使用 PHP Curl 调用基于浏览器的请求

从浏览器复制的 CSS 选择器在 Python 中使用 BeautifulSoup4 返回不同的结果

Haskell Yesod-执行POST请求时浏览器OPTIONS请求的CORS问题

500在python get请求上收到内部服务器错误,在浏览器中使用相同的url

服务器在 python 中使用请求库时发送 403 状态代码,但适用于浏览器

如何复制模型浏览器的功能?

Http请求多浏览器麻烦

同步Ajax请求“锁定”浏览器

请求获取与浏览器不同的数据

浏览器随机不请求资源

安全浏览器扩展API请求

请求 html 页面与浏览器不同