2
respostas

Erro ao executar código de coleta

Boa tarde pessoal.

Recebi o seguinte erro ao executar o código no RStudio:

Error in tableNodes[[1]] : subscript out of bounds

O código que estou executando é este:

while (ano_mes_corrente  <= 201709) {
  site <- paste("http://www.nuforc.org/webreports/ndxe", as.character(ano_mes_corrente), ".html")
  site <- gsub (" ", "", site)
  html2 <- GET(site)
  parsed <- suppressMessages(htmlParse(html2, asText=TRUE))
  tableNodes <- getNodeSet(parsed, "//table")
  tb <- readHTMLTable(tableNodes[[1]])
  df_OVNI <- rbind(df_OVNI,tb)
  if (mes_corrente == 12)
  {
      mes_corrente <- 1
      ano_corrente <- ano_corrente + 1
      ano_mes_corrente <- (ano_corrente * 100) + mes_corrente
  }
  else
  {
    mes_corrente <- mes_corrente + 1
    ano_mes_corrente <- ano_mes_corrente + 1 
  }
  print(ano_mes_corrente)
}

Desde já agradeço.

Flávia

2 respostas

Bom dia.

Talvez o erro ocorre pois o site http://www.nuforc.org/webreports/ndxe é bloqueado aqui. Pode ser isso?

Obrigada. Flávia

Olá Flávia, tudo bem? Espero que sim!

Desculpe pela demora em retornar.

O site http://www.nuforc.org/webreports/ndx não está bloqueado, o que acontece é que esse endereço está incompleto e parte do código completa o final do endereço com o número do ano e mês, além do fim .html. Portanto o endereço completo precisa ser algo do tipo http://www.nuforc.org/webreports/ndx201709.html, que vai direcionar para o ano 2017 e mês 09.

A parte do código que direciona o endereço completo é a seguinte:site <- paste("http://www.nuforc.org/webreports/ndxe", as.character(ano_mes_corrente), ".html").

O que ocorreu foi que a lista tableNodes tentou ser acessada por um elemento que não existe. Verifique nos seu Global Enviroment se a lista possui o elemento [[1]] para que seja acessado. Você pode checar isso clicando na lista tableNodes no seu Global Enviroment.

Acessando os elementos de uma lista através do Global Enviroment do RStudio

Caso não esteja da mesma forma, limpe o seu Global Enviroment e execute os códigos novamente, tenha certeza de que instalou e carregou as bibliotecas. Para limpar o Global Enviroment basta clicar no espanador que fica na aba em questão. Os pacotes necessários podem ser instalados e carregados com os comandos:

install.packages('httr') 
install.packages('XML') 
library(httr) 
library(XML)

Limpando o Global Enviroment no RStudio através da ferramenta de limpeza

Bons estudos!