Fetcher for BCB SGS (Sistema Gerenciador de Séries Temporais)
Project description
bcb-sgs-fetcher: Coletor de séries temporais do BCB SGS
Biblioteca Python para download de dados e metadados do SGS (Sistema Gerenciador de Séries Temporais) do Banco Central do Brasil. Expõe dois clientes independentes: um para a API JSON pública e outro para raspagem HTML do portal SGS.
Fonte dos dados: BCB SGS — Sistema Gerenciador de Séries Temporais
Instalação
pip install git+https://github.com/Quantilica/bcb-sgs-fetcher.git
Uso Rápido
Buscar dados de uma série temporal
from bcb_sgs_fetcher import SgsDataClient
with SgsDataClient() as client:
points = client.fetch_series_data(
series_id=1, # Dólar/Real (USD/BRL)
frequency_acronym="D", # Diária — usa estratégia retroativa ano a ano
)
for p in points[:3]:
print(p.date, p.value)
points é uma list[SeriesPoint] onde cada item contém series_id, date,
date_end e value (Decimal | None).
Buscar metadados de uma série
from bcb_sgs_fetcher import (
ScraperClient,
parse_metadata_basic,
parse_metadata_full,
)
with ScraperClient() as scraper:
htmls = scraper.request_metadata_html(series_id=1)
basic = parse_metadata_basic(htmls["basic"])
full = parse_metadata_full(htmls["full"])
print(basic.name, basic.frequency)
print(full.last_update, len(full.provider_data))
CLI
Os comandos são agrupados em dois eixos: series (operações por série) e
catalogo (catálogo de metadados).
Via quantilica-cli
# Baixar dados de uma série
quantilica bcb-sgs series sync 1 -f D -o ./dados
# Baixar metadados de uma série
quantilica bcb-sgs series metadata 1 -o ./dados
# Buscar séries por texto
quantilica bcb-sgs series search "câmbio"
# Sincronizar o catálogo completo de metadados
quantilica bcb-sgs catalogo sync
CLI standalone
# Baixar dados de uma série
bcb-sgs-fetcher series sync 1 --frequency D --output ./dados
# Baixar metadados de uma série específica
bcb-sgs-fetcher series metadata 1 --output ./dados
# Buscar séries por texto
bcb-sgs-fetcher series search "taxa selic"
Sincronização completa do catálogo de metadados
Para baixar e processar metadados de todas as séries do SGS, use o
comando catalogo sync:
bcb-sgs-fetcher catalogo sync -o /data/bcb-sgs
Ele executa automaticamente os quatro passos em sequência, cada um com sua própria sessão HTTP:
- Baixa a árvore de grupos e as listagens de séries por grupo
- Baixa as páginas de séries desativadas
- Extrai todos os IDs dos HTMLs baixados
- Baixa e parseia os metadados de cada série
Todos os dados são gravados em <output>/bcb-sgs_YYYY-MM/. O pipeline é
retomável: arquivos já existentes no disco são ignorados em todos os
passos, então basta reexecutar o mesmo comando após uma interrupção.
Para ajustar o intervalo entre requisições (padrão: 10 segundos):
bcb-sgs-fetcher catalogo sync -o /data/bcb-sgs --sleeptime 5
Passos individuais
Se precisar executar um passo isoladamente (ex.: após corrigir falhas parciais), os subcomandos individuais aceitam os mesmos parâmetros:
# Apenas a árvore de grupos
bcb-sgs-fetcher catalogo arvore-grupos -o /data/bcb-sgs
# Apenas séries desativadas
bcb-sgs-fetcher catalogo series-desativadas -o /data/bcb-sgs
# Apenas extração de IDs (grava em <output>/bcb-sgs_YYYY-MM/ids.txt)
bcb-sgs-fetcher catalogo extract-ids -o /data/bcb-sgs
# Apenas metadados, a partir de um arquivo de IDs
bcb-sgs-fetcher catalogo metadata-bulk \
--ids-file /data/bcb-sgs/bcb-sgs_YYYY-MM/ids.txt \
-o /data/bcb-sgs
Baixar dados das séries
Por padrão, series sync baixa os dados (a série temporal) de todas as
séries — enumeradas a partir das listagens já baixadas pelo catalogo sync. A
periodicidade de cada série é lida das listagens, então séries diárias já usam a
estratégia retroativa automaticamente. O download é concorrente
(--workers) e retomável (--skip-existing).
# Todas as séries (padrão) — requer um catálogo já sincronizado
bcb-sgs-fetcher series sync --skip-existing --workers 5 -o /data/bcb-sgs
# Estreitando: apenas uma série
bcb-sgs-fetcher series sync 1 --frequency D -o /data/bcb-sgs
# Estreitando: apenas os IDs de um arquivo
bcb-sgs-fetcher series sync \
--ids-file /data/bcb-sgs/bcb-sgs_YYYY-MM/ids.txt \
--skip-existing --workers 5 -o /data/bcb-sgs
Por padrão as listagens são procuradas em <output>/bcb-sgs_YYYY-MM; use
--catalog-dir para apontar outro mês. Os dados são gravados em
<output>/data/series_{id}@YYYYMMDDTHHMMSS.json (nome versionado por
data-hora — cada coleta gera um snapshot novo, então re-baixar a mesma série no
mesmo dia não sobrescreve a anterior). --skip-existing pula séries que já
têm um snapshot do dia. Use --period latest para baixar só as últimas 20
observações.
API Python
Navegar a árvore de grupos
from bcb_sgs_fetcher import ScraperClient, extract_arvore_grupos, extract_table_data
from bs4 import BeautifulSoup
with ScraperClient() as scraper:
html = scraper.get_grupos_principais()
soup = BeautifulSoup(html, "lxml")
grupos = extract_arvore_grupos(soup.find("table"))
Cache em disco
bcb_sgs_fetcher.storage é a fonte única do layout em disco do ecossistema
bcb-sgs (o bcb-sgs-sql consome este mesmo módulo). É construído sobre
quantilica-core (escrita atômica, stamp_filename, StampedDataRepository).
from pathlib import Path
from bcb_sgs_fetcher import storage
root = Path("/data/bcb-sgs")
# Observações: snapshot versionado por data-hora (não sobrescreve)
storage.write_series_data(root, 1, rows) # data/series_1@...T....json
latest = storage.latest_series_file(root, 1) # snapshot mais recente
rows = storage.read_series_data(latest)
# Metadados particionados por mês (combinado + HTML bruto)
storage.write_metadata(root, 1, basic=b, full=f, html_basic=hb, html_full=hf)
combined = storage.read_combined_metadata(root, 1) # {"basic": ..., "full": ...}
Fontes de Dados
| Cliente | URL | Tipo |
|---|---|---|
SgsDataClient |
api.bcb.gov.br/dados/serie/bcdata.sgs.{id}/dados |
API JSON pública |
ScraperClient |
www3.bcb.gov.br/sgspub |
Raspagem HTML |
Desenvolvimento
git clone https://github.com/Quantilica/bcb-sgs-fetcher.git
cd bcb-sgs-fetcher
uv sync --dev
uv run pytest
Licença
MIT — veja LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file bcb_sgs_fetcher-0.5.0.tar.gz.
File metadata
- Download URL: bcb_sgs_fetcher-0.5.0.tar.gz
- Upload date:
- Size: 38.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a3a13e331bf87084c41f4116b67e5ba2983cad5ce480f469eccb3e0495b51507
|
|
| MD5 |
5978f0fd7b954ff86af8f77a77903b96
|
|
| BLAKE2b-256 |
b4f47f47ac5aee538703c5f41574b88bb3fef377efed1112dae0a88ccce59a7e
|
Provenance
The following attestation bundles were made for bcb_sgs_fetcher-0.5.0.tar.gz:
Publisher:
publish.yml on Quantilica/bcb-sgs-fetcher
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
bcb_sgs_fetcher-0.5.0.tar.gz -
Subject digest:
a3a13e331bf87084c41f4116b67e5ba2983cad5ce480f469eccb3e0495b51507 - Sigstore transparency entry: 2194903741
- Sigstore integration time:
-
Permalink:
Quantilica/bcb-sgs-fetcher@923fc77b4ca7af2140cb5b83f896db4a51c924e3 -
Branch / Tag:
refs/tags/v0.5.0 - Owner: https://github.com/Quantilica
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@923fc77b4ca7af2140cb5b83f896db4a51c924e3 -
Trigger Event:
push
-
Statement type:
File details
Details for the file bcb_sgs_fetcher-0.5.0-py3-none-any.whl.
File metadata
- Download URL: bcb_sgs_fetcher-0.5.0-py3-none-any.whl
- Upload date:
- Size: 36.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
233bbd6a3926b73ce35f20a50099188f061cae30daf6cb51efb9e3e943bf3d22
|
|
| MD5 |
71421707e6ca2a4afb510cd5f78a3884
|
|
| BLAKE2b-256 |
9ac3a18ef2f9bee6ade07002edb46cc17bba11187bfc717e4edb78c5d617392a
|
Provenance
The following attestation bundles were made for bcb_sgs_fetcher-0.5.0-py3-none-any.whl:
Publisher:
publish.yml on Quantilica/bcb-sgs-fetcher
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
bcb_sgs_fetcher-0.5.0-py3-none-any.whl -
Subject digest:
233bbd6a3926b73ce35f20a50099188f061cae30daf6cb51efb9e3e943bf3d22 - Sigstore transparency entry: 2194903744
- Sigstore integration time:
-
Permalink:
Quantilica/bcb-sgs-fetcher@923fc77b4ca7af2140cb5b83f896db4a51c924e3 -
Branch / Tag:
refs/tags/v0.5.0 - Owner: https://github.com/Quantilica
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@923fc77b4ca7af2140cb5b83f896db4a51c924e3 -
Trigger Event:
push
-
Statement type: