Código
- 1
- Salvando o link em um objeto
- 2
- Fazer uma requisição POST no link
- 3
- Salvar o resultado em um arquivo
Um exemplo com dados de barragens de mineração
Cerveja com Dados Fortaleza
12 de abril de 2023
Eu gosto de automatizar tarefas!
Um exemplo com dados públicos
Base de dados com abrangência nacional
Agência Nacional de Mineração.
Segundo o site do sistema, o empreendedor deve atualizar as informações sempre que ocorrerem mudanças na estrutura ou em seu reservatório.
Acesse os dados em: https://app.anm.gov.br/SIGBM/Publico/ClassificacaoNacionalDaBarragem
Permite fazer pesquisas, ver os resultados, e baixar em Excel, CSV ou PDF!
Não disponibiliza o histórico ao baixar, apenas o cenário atual.
É interessante ter o histórico. Exemplo: o volume armazenado foi alterado? aumentou? diminuiu?
Descobri, utilizando a aba Network/Rede do navegador e fazendo a pesquisa, que ao clicar para baixar um arquivo Excel é enviado uma requisição POST para um link fixo.
Podemos usar esse link para baixar os dados em um script!
[1] "ID Barragem" "Nome da Barragem"
[3] "Nome do Empreendedor" "CPF/CNPJ"
[5] "Latitude" "Longitude"
[7] "Posicionamento" "Município"
[9] "UF" "Minério Principal"
[11] "Altura Atual(m)" "Volume Atual(m³)"
[13] "Método Construtivo" "Categoria de Risco"
[15] "Dano Potencial Associado" "Inserida na PNSB?"
[17] "Nível de Emergencia" "Status DCE Atual"
[19] "Status DCO Atual"
library(leaflet)
sigbm |>
dplyr::mutate(texto = glue::glue(
"UF: {uf} <br>
ID: {id_barragem} <br>
Nome da barragem: {nome_da_barragem} <br>
Empreendedor: {nome_do_empreendedor} <br>
Minério principal: {minerio_principal}"
)) |>
leaflet() |>
addProviderTiles("Esri.WorldImagery") |>
addMarkers(~ long, ~lat,
clusterOptions = markerClusterOptions(),
popup = ~texto)
Conseguimos acessar os dados diretamente do R.
Isso ainda não resolve a questão de ter um histórico!
Podemos usar o GitHub Actions para pedir que um computador execute um código todos os dias!
Configurei um workflow para baixar dados diariamente e salvar em um repositório no GitHub.
Tem dados desde 05/05/2022.
Código em: sigbm/.github/workflows/download-sigbm.yaml
on:
schedule:
- cron: "15 12 * * *"
workflow_dispatch:
branches: [main, master]
name: download-sigbm
jobs:
download:
runs-on: ubuntu-latest
env:
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v2
- name: Fetch latest data
run: |-
curl -X POST -d "" https://app.anm.gov.br/SIGBM/Publico/ClassificacaoNacionalDaBarragem/ExportarExcel --output data-raw/sigbm_download_`date +"%Y-%m-%d"`.xlsx
- name: commit results
run: |
git config --local user.email "milz.bea@gmail.com"
git config --local user.name "Beatriz Milz"
git add .
git commit -m 'Update data' || echo "Update data"
git push origin || echo "Update data"
Podemos usar o GitHub Actions para baixar e salvar dados ao longo do tempo
Pode ser útil para jornalistas, pesquisadores, setor privado, etc.
O GH Actions NÃO depende do R :)
Posts sobre GitHub Actions: https://beamilz.com/series-gha.html
Co-organizadora: R-Ladies São Paulo / Latin-R / satRday São Paulo
Professora na Curso-R e consultora na R6
Instrutora de Tidyverse certificada pela RStudio
Twitter: @BeaMilz
Blog: beamilz.com
Email: milz.bea@gmail.com
Slides por Beatriz Milz (@BeaMilz), feito com Quarto. Código disponível no GitHub.