Python: использование Request POST для получения данных сайта - PullRequest
0 голосов
/ 26 ноября 2018

Я потратил много времени, пытаясь получить ретроспективные цены с сайта ниже в питоне. Рамка данных:

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)

И я считаю, что указал правильный идентификатор на упомянутом веб-сайте:

.
.
.
<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:&nbsp;</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;"> 
.
.
.

Я действительно ценю любую помощь или понимание

Спасибо!

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Измените df_1 = pd.read_html(r.url,header = 0) на df_1 = pd.read_html(r.text,header = 0), потому что вам нужны данные после пост-запроса.Если вы откроете r.url, вы получите последние данные, потому что txtData - None.

0 голосов
/ 26 ноября 2018

Добавьте к вашему запросу следующий заголовок:

Content-Type: application/x-www-form-urlencoded
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...