Skip to content

royopa/petrobras-scraper

Repository files navigation

Build Status

Petrobras scraper

O Petrobras scraper é um projeto para captura de dados do site da Petrobras com indicadores de preços médios da Gasolina e Diesel.

Informações contidas nos Relatórios

Relatório com variação de preços

A Petrobras apresentava o ajuste de preços com a variação em percentual em relação a data divulgada anteriormente, através deste relatório PDF. Este relatório não é mais atualizado e a última data disponível é o dia 17/02/2018. Um trecho deste relatório pode ser visualizado na imagem abaixo:

relatorio_ajuste_precos_example.png

O programa que faz o download e converte os dados baixados para CSV é o download_ajustes_precos_diesel_e_gasolina.py.

Relatório com preços médios

A partir de 08/02/2018 a Petrobras passou a disponibilizar a informação de preços médios em reais, e não mais em percentual, através deste relatório PDF. Este relatório não é mais atualizado e a última data disponível é o dia 19/04/2019. Um trecho deste relatório pode ser visto abaixo:

relatorio_preco_medio_example.png

O programa que faz o download e converte os dados baixados para CSV é o download_precos_medios_diesel_e_gasolina.py.

Relatórios apenas no formato PDF

As informações disponibilizadas no site da petrobras estão apenas no formato PDF. Entrei em contato com eles (Protocolo Ouvidoria Geral Nº 00914/2018) solicitando que o relatório fosse disponibilizado em outro formato (json, xml ou txt), mas eles responderam que existia apenas o formato PDF disponível e não me deram nenhum indicativo sobre a possibilidade de disponibilização da informação em outros formatos no futuro.

Diante disso, foi necessário a criação de um passo para extrair os dados da tabela em PDF, tarefa que foi realizada pela biblioteca tabula-py. O tabula-py é um wrapper do tabula-java, que extrai uma tabela de um arquivo PDF para um DataFrame pandas.

Instalar dependências do projeto

Para instalar as dependências do projeto utilize o comando abaixo:

> cd petrobras-scraper
> pip install -r requirements.txt

ou caso vocë utilize o pipenv, utilize o comando abaixo e ative o virtualenv:

> cd petrobras-scraper
> pipenv install
> pipenv shell

Utilizando os programas

1º passo - Fazer o download e atualizar a base de dados de preços

Para fazer o download dos preços e atualizar a base de dados de preços basta executar o programa download_precos_medios_diesel_e_gasolina.py com o comando abaixo:

> python download_precos_medios_diesel_e_gasolina.py

2º passo - Calcular valores e atualizar a base de indicadores

A partir da base de preços médios diários atualizada no passo anterior, foi criado uma outra base com a variação de preços em percentual. Para executar esse processo e atualizar a base de ajuste de preços basta executar o programa atualiza_base_ajuste_precos_diesel_gasolina.py com o comando abaixo:

> python atualiza_base_ajuste_precos_diesel_gasolina.py

3º passo - Calcular o preço na base 100 com dados a partir de 2017

Visto que os dados de preços da Petrobras foram disponibilizados apenas a partir de fevereiro/2018 e anteriormente já existia na base de dados preços utilizando base 100 tendo como início 01/01/2017, foi criado o programa calcula_preco_base_100.py para fazer esse cálculo e gerar a base final utilizada para análise

A base final contém a variação diária e os preços usando base 100 a partir de 01/01/2017. A execução desse programa gera dois arquivos de saída com o mesmo conteúdo: um em csv e outro no formato excel xlsx. A base final tem o formato abaixo:

base_final.png

Atalho para executar os passos de uma única vez

Para executar a atualização das bases de dados de uma única vez, basta executar os 3 passos seguidos. Para facilitar esse processo, apenas execute o script start.bat/start.sh, de acordo com o seu sistema operacional:

No Linux
> ./start.sh
No Windows
> ./start.bat

Análise dos dados

Caso você deseja abrir as bases de dados como um dataframe pandas, utilize a função read_csv(), conforme exemplo abaixo:

import pandas as pd

path_file_base = 'bases/saida_indices_diesel_e_gasolina_base.csv'
df = pd.read_csv(path_file_base, sep=';')

print(df.tail())

Formato JSON

Para disponibilização dos dados no formato json, foi desenvolvido um script em Flask que lê os arquivos csv com a base de preços e a base de índices e disponibiliza no formato json. Para executar, execute o comando abaixo:

> python ./flask-app.py

Então será iniciada uma aplicação Flask na porta 5000, que pode ser acessada no browser com os preços do diesel e gasolina e com os índices de acordo com os preços disponibilizados.

About

Preços do diesel e da gasolina em R$ disponibilizados pela Petrobras

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published