python - Python:使用 Request POST 获取网站数据
问题描述
我花了很多时间试图从以下网站的 python 数据框中获取追溯价格:
http://www2.bmf.com.br/pages/portal/bmfbovespa/boletim2/Ajustes2.asp
我能够使用以下方法成功获取当前数据:
url = 'http://www2.bmf.com.br/pages/portal/bmfbovespa/boletim2/Ajustes2.asp'
df = pd.read_html(url, header = 0)
现在我正在为追溯价格而苦苦挣扎:
import pandas as pd
import requests
#BMF webpage
url = 'http://www2.bmf.com.br/pages/portal/bmfbovespa/boletim2/Ajustes2.asp'
#requests to manipulate BMF Form
r = requests.post(url, data = {'txtData':'11/21/2018'})
df_1 = pd.read_html(r.url, header = 0)
而且我相信我已经在提到的网站上确定了正确的 ID:
.
.
.
<h1>Settlement Prices</h1>
<table border="0" cellpadding="0" cellspacing="0">
<form name="frmBD" onSubmit="return retroativo_Validator(this)"action="Ajustes2.asp" method="POST">
<tr>
<td class="TXT_Azul">RETROACTIVE: </td>
<td>
<input name="txtData" MAXLENGTH="10" onKeyPress="javascript:mask_data_home('2','0',true,frmBD);" type="text" class="combo" id="txtData">
<input name="Consultar" type="image" src="http://www.bmf.com.br/bmfbovespa/images/comum/btoOk.gif" border="0" align="absmiddle">
<img src="http://www.bmf.com.br/bmfbovespa/images/comum2/btoLegenda.gif" align="absmiddle" onMouseOver="javascript:legenda.style.display='block';" onMouseOut="javascript:legenda.style.display='none';">
<div id="legenda" style="position:absolute; width:200px; height:115px; z-index:10; background-color: #FFFFFF; layer-background-color: #FFFFFF; border: 1px solid #C9C9C9; overflow: visible; display: none;">
.
.
.
我非常感谢任何帮助或见解
谢谢!
解决方案
将以下标头添加到您的请求中:
Content-Type: application/x-www-form-urlencoded
推荐阅读
- python - 我固定的 pyOpenSSL 版本 19.0.0 突然坏了
- vuejs2 - 有没有办法使用 Vue-Router 检测查询更改并成功获取新数据?
- python - 带有不和谐 RPC 的 Python 线程
- python - 在 Python 中解析从 TCL 返回的关联数组
- python - 如何从列切片中的行值创建列标题,从而使列行值与列标题匹配?
- string - PyQt - 将背景颜色链接到字符串
- azure-active-directory - 通过 Graph API 添加团队成员。回复:403
- java - Java中的方法如何既可以是抽象的又可以声明为“可选”?
- php - 使用 Laravel Artisan [Laravel 8] 创建我的自定义类
- javascript - 使用 JSX 时如何让 Tree Shaking 在 Vuetify 中工作?