Baixando dados de tabelas

Apesar do uso cada vez mais difundido das API (“Application Programming Interface”) para obter dados via internet, ainda é comum s disponibilização de dados através de tabelas em arquivos de planilhas (do tipo Microsoft Excel ou mesmo HTML). Já foram publicadas rotinas em shell script e script em R para abrir arquivos no formato XLS(X) para extrair informações disponíveis nos arquivos para uso interno ou gravar a saída em um arquivo CSV.

Os scripts a seguir foram escritos em python para baixar um arquivo HTML (ou XLSX) e extrair as informações. Como exemplo, são usados arquivos do ONS, com o objetivo de extrair os nomes dos reservatórios e valores dos volumes úteis.

Primeiramente, deve-se montar o link a ser consultado, recebendo data e número do subsistema, assim como o nome do arquivo a ser gravado no computador. Para baixar o arquivo, é usada a biblioteca “urllib“.

O script a seguir baixa uma arquivo HTML e seu conteúdo é interpretado pela biblioteca “BeautifulSoup“. Outro exemplo de uso dessa lib pode ser visto no post Leitura automática de páginas com envio de informações. A função “findAll” busca por tags HTML, podendo restringir por seus atributos (como “id” ou “class”). Ao encontrar uma tabela (tag “table”), as linhas (“tr”, de “table row”) e células (“td” ou “th”, de “table head”) podem ser selecionadas por colunas.

A variável “size” e a condicional a seguir foram feitas para o caso da célula ter a tag “td” ou “th”.

O segundo script baixa um arquivo do tipo XLSX, que é lido e interpretado diretamente pela biblioteca “pandas“, guardando os valores em um “dataframe”. Também foi incluído um loop para quatro valores diferentes de subsistemas.

A condicional serve para criar um novo arquivo, se for o primeiro subsistema, ou para incluir os novos valores no final do arquivo já criado (sem o cabeçalho).