Esta atividade tem como objetivo coletar dados de algum site, durante um perÃodo de tempo definido pelo usúario. O site escolhido foi o http://www.valor.com.br/valor-data que apresenta valores atualizados das moedas dolar e euro.
Para a coleta serão utilizados os pacotes rvest
(pacote com utilitários para obtenção de dados de um site html), lubridate
(manipulação de datas) e stringr
(manipulação de strings).
Ainda, para fazer a coleta automatizada de dados foi utilizado o recurso do sistema operacional ubuntu chamado crontab. Para utilizar o crontab se você estiver em uma máquina com linux basta abrir o terminal e escrever o código
\[ \textrm{crontab -e}\]
Este comando edita uma aplicação crontab, e como muito provávelmente não temos nenhuma, esse código servirá também para criar o primeiro crontab.
Dicas sobre o uso do crontab podem ser encontradas facilmente no google. O crontab a ser utilizado para este código será:
\[ 0\space 5\space *\space *\space 1\space \]
Isso indica que o sistema irá executar o comando desejado no minuto de 5 de cada hora, ou seja, os dados serão coletados a cada hora.
O código do R a ser executado a cada crontab será:
# Vamos aprender a fazer webscraping
suppressMessages(library("rvest", lib.loc="/usr/local/lib/R/site-library"))
suppressMessages(library("lubridate"))
suppressMessages(library("stringr"))
site <- read_html("http://www.valor.com.br/valor-data", encoding = "UTF-8")
# Precos do dolar a cada hora
# preco no dia da coleta
time = now()
prices = site %>%
html_nodes(css = "span.number") %>%
html_text() %>%
str_replace(",",".") %>%
as.numeric()
# -- Posicoes dos dados coletados -- #
# |1| = data da coleta
# |2| = dolar comercial
# |3| = dolar ptmax
# |4| = dolar turismo
# |5| = euro comercial
# |6| = euro x dolar
# ---------------------------------- #
# ira salvar a base no tipo de arquivo longo
cat(time %>% as.character, prices, fill = TRUE, sep = ",")
## 2018-06-13 10:59:09,3.7163,3.6988,3.88,4.3752,1.1776
O nosso conjunto de dados formado a partir do dia 02/05/2018 consta atualmente com 997 observações.
Este relatório foi escrito as 10:55 do dia 13/06/2018.
data.robot <- read.table("~/datarobot.txt", header = FALSE, sep = ",")
names(data.robot) = c("tempo",
"d.comercial",
"d.ptmax",
"d.turismo",
"e.comercial",
"exd")
plot(ts(data.robot))