我正在尝试从INMET网站获取降雨量数据。 首先,它需要发布一个包含用户名和密码的表单,然后使用一些参数填充表单。
我首先尝试使用Rcurl软件包中的“ postform”功能设置登录参数,然后生成用于访问数据的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访问数据
我对此有些困惑,但我想我快要到了。
答案 0 :(得分:1)
由于我没有帐户,因此无法超越登录名。对于登录,该站点发出一个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
和表单文本。我不知道您是否需要继续为每个请求传递用户名/通行证,因为我无法通过登录页面,所以我不能为任何其他请求提供帮助。