Skip to content

dalmofelipe/b3-tickers

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

B3 Tickers

Script para capturar dados de empresas listadas na B3.

O script consome a API pública do portal de listados da B3, percorre todas as páginas do catálogo de empresas e salva os dados em arquivos JSON.

Estrutura

├── src/
│   ├── config.py     URLs, headers e constantes de rate-limit
│   ├── encoder.py    Codificação base64 do payload de paginação
│   ├── fetcher.py    Requisições HTTP com retry exponencial
│   ├── storage.py    Persistência dos JSONs em disco
│   └── main.py       CLI + orquestrador com fallback híbrido
├── data/             Arquivos gerados: page_1.json .. page_N.json
└── scraper.log       Log da execução

Requisitos

  • Python 3.11+
  • UV (recomendado) ou pip

Setup

git clone <repo>
cd b3-tickers

# Com UV (recomendado)
uv sync

# Ou com pip
python3 -m venv .venv && source .venv/bin/activate
pip install -e .

Uso

uv run b3-tickers

# Modos disponíveis:
uv run b3-tickers --mode sequential   # requisições em série (mais seguro)
uv run b3-tickers --mode parallel     # paralelo com semáforo (mais rápido)
uv run b3-tickers --mode auto          # tenta paralelo, fallback p/ sequencial

Modo auto (padrão)

  1. Tenta execução paralela com até 3 requisições simultâneas
  2. Se houver falhas, retenta as páginas perdidas em modo sequencial
  3. Ideal como padrão — performance com resiliência

Anti-bloqueio

  • User-Agent aleatório a cada requisição (5 variações)
  • Delay aleatório entre 1-3s (paralelo) ou 2-6s (sequencial)
  • Headers realistas (Accept-Language, Referer, Sec-Fetch-*)
  • Retry com backoff exponencial (3 tentativas, 2-10s de espera)

Dados

Cada página é salva em data/page_{n}.json com a estrutura:

{
  "page": { "pageNumber": 1, "pageSize": 120, "totalRecords": 3425, "totalPages": 29 },
  "results": [
    {
      "codeCVM": "900049",
      "issuingCompany": "UQMU",
      "companyName": "1461 INVESTIMENTOS S.A",
      "cnpj": "46639922000144",
      "status": "A",
      "segment": "Não Classificados",
      
    }
  ]
}

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages