O presente pacote permite que você acesse as tabelas dos qualis de acordo com área e classificação do evento diretamente do site do Sucupira, via R. Você pode pode selecionar se deseja obter todas as tabelas do site (processo demorado) ou apenas algumas, relacioná-las e fazer as operações que desejar.

O pacote QualisR é desenvolvido utilizando o controle de versão do Github. Então você pode fazer download dele utilizando o pacote devtools:

# install.packages("devtools")
devtools::install_github("JessicaSousa/QualisR")

Explorando as funções do pacote

O pacote possui três funções get_qualis_table que retorna a tabela dos qualis de acordo com o evento e área, a função get_options que retorna as opções do menu de seleção e get_sucupira_page que realiza GET na página do Sucupira.

#Realiza Get na página do Sucupira
sucupira_get <- QualisR::get_sucupira_page()
print(sucupira_get$status_code)

#Obter a tabela de periódicos de computação no triênio 2010-2012
tabela_computacao <- QualisR::get_qualis_table(sucupira_get, area = 'computação', event = 'triênio 2010-2012')

head(tabela_computacao[order(tabela_computacao$Estrato), ])

Exemplo 1 - Obtendo campos do formulário

Primeiramente, no site do sucupira temos alguns menus de opções, o que permite que busquemos por área, estrato ou por título por exemplo. Primeiramente vamos descobrir o nome de cada um desses menus de opções com a ajuda do pacote rvest. A área onde se encontra os campos da busca personalizada do Sucupira estão dentro do nó cuja classe é form-group (Isso pode ser visto através da inspeção do elemento através de um navegador).

library(magrittr)

url <- paste("https://sucupira.capes.gov.br/",
               "sucupira/public/consultas/coleta/",
               "veiculoPublicacaoQualis/",
               "listaConsultaGeralPeriodicos.jsf",
               sep = "")
sucupira_session <- rvest::html_session(url)
#Obter a região do html correspondente ao formulário de busca
formulario <- sucupira_session %>% xml2::read_html() %>% rvest::html_nodes('.form-group')

campo <- formulario %>% rvest::html_nodes('label') %>% rvest::html_text()
nomes <- formulario %>%  rvest::html_nodes('.form-control') %>% rvest::html_attr('name')
labels <- gsub("[\r\n]", "", campo)
campos <- data.frame(campo = labels, nomes = nomes)

knitr::kable(campos, caption = 'Nomes dos nós do formulário')

Acessando o site do Sucupira vemos que há alguns campos que permitem a seleção de itens, são eles Evento de Classificação:, Área de Avaliação: e Classificação:. A função QualisR::get_options permite que tenhamos acesso as opções desses respectivos menus ao passar o nome do nó o qual esse se encontra. Essa função recebe como argumento um resultado do rvest::GET do site do Sucupira e uma string representando o nome nó. A seguir vamos obter as opções para o campo de Classificação:.

#ATENÇÃO, é para colocar o nome de acordo com o nome do nó (após o form:)
options <- QualisR::get_options(request = sucupira_get, form = 'estrato')

Assim, obtemos a lista de opções e seus respectivos valores utilizados no processo de submissão do formulário. O resultado da operação anterior pode ser visto a seguir. Para obter as opções dos outros campos basta seguir os mesmos passos.

knitr::kable(options, caption = 'Lista de Estratos', row.names = FALSE)

Exemplo 2 - Fazendo uma busca no site do Sucupira

Para realizar uma busca no site, precisamos primeiramente conhecer seus campos. No exemplo anterior obtemos o nome desse campos. Vamos novamente ao httr. Eu quero pesquisar pelo Journal of Statistical Software selecionando o evento de classificação de periódicos do quadriênio de 2013-2016.

evento.op <- QualisR::get_options(request = sucupira_get, form = 'evento')

#Valor do campo do envento que corresponde ao quadriênio
evento.valor <- evento.op$value[1]

#Obter ViewState da Página do Sucupira
  viewstate <- sucupira_get %>% xml2::read_html() %>%
    rvest::html_node(xpath = "//*[@id=\"javax.faces.ViewState\"]") %>%
    rvest::html_attr("value")

parametros <- list(
  'form' = 'form',
  'form:evento'= evento.valor,
  'form:area' = '',
  'form:issn:issn' ='', 
  'form:checkTitulo' = TRUE,
  'form:j_idt52' = 'Journal of Statistical Software',
  'form:estrato' = '',
  'form:consultar' = 'Consultar',
  'javax.faces.ViewState' = viewstate
)

resultado <- httr::POST(url, body = parametros)
pagina <- resultado %>% httr::content('text') %>% xml2::read_html() 
tabela <- pagina %>% rvest::html_table() %>% .[[1]]

Como resultado da busca pelo pelo periódico, obtemos a tabela a seguir com 5 linhas.

knitr::kable(tabela, caption = 'Resultado da busca do periódico', row.names = FALSE)


JessicaSousa/QualisR documentation built on May 20, 2019, 8:47 a.m.