Заполнение формы для получения метеорологических данных на сайте с помощью RCurl в R - PullRequest
0 голосов
/ 23 ноября 2018

Я пытаюсь получить данные об осадках на веб-сайте INMET.Сначала необходимо отправить форму с именем пользователя и паролем, а затем заполнить форму с некоторыми параметрами.

Сначала я пытаюсь установить параметры входа в систему с помощью функции "postform" из пакета Rcurl, а затем сгенерироватьURL для доступа к данным.

params<-list('E-mail do Usuário' = "username", 'Senha' = "xxxxx") #grabbed from html text
html<-postForm('http://www.inmet.gov.br/projetos/rede/pesquisa/inicio.php', params = params, curl = getCurlHandle(), style="POST")
station<-"83630"
startdate<-"01/01/1981"
enddate<-"01/01/2018"
url.data<-sprintf("http://www.inmet.gov.br/projetos/rede/pesquisa/gera_serie_txt.php?&mRelEstacao=%s&btnProcesso=serie&mRelDtInicio=%s&mRelDtFim=%s&mAtributos=,,,,,,,,,,1,,,,,,", station, startdate, enddate)

url.data - это окончательный URL-адрес, к которому я могу получить доступ к данным через HTML

. Я немного застрял на этом, но, полагаю, япочти готово.

1 Ответ

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

Я не могу выйти за пределы логина, так как у меня нет учетной записи.Для входа в систему этот сайт делает запрос POST, который в конечном итоге выглядит следующим образом:

POST /projetos/rede/pesquisa/inicio.php HTTP/1.1
Host: www.inmet.gov.br
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:64.0) Gecko/20100101 Firefox/64.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.7,fr-BE;q=0.3
Referer: http://www.inmet.gov.br/projetos/rede/pesquisa/inicio.php
Content-Type: application/x-www-form-urlencoded
Content-Length: 78
Connection: close
Cookie: PHPSESSID=0j7eg8u12gka0c774aalahm9s0
Upgrade-Insecure-Requests: 1

mUsuario=USERNAME&mGerModulo=PES&mCod=a&mSenha=PASSWORD&mGerModulo=PES&btnProcesso=+Acessar+

Итак, он передает несколько других параметров запроса.Как list они выглядят так:

list(
  mUsuario = "USERNAME", 
  mGerModulo = "PES", 
  mCod = "a", 
  mSenha = "PASSWORD", 
  mGerModulo = "PES", 
  btnProcesso = "+Acessar+"
)

Обратите внимание, что вам нужно использовать форму ввода name против текста формы.Я понятия не имею, если вам нужно продолжать передавать пользователя / пароль для каждого запроса, не могу ли я помочь с другими запросами, так как я не могу пройти мимо страницы входа в систему.

...