Coleta automática de dados de fontes oficiais brasileiras para pesquisa empírica
O RasPe foi desenvolvido para pesquisadores que precisam coletar grandes volumes de dados de fontes oficiais brasileiras, mas têm pouco ou nenhum conhecimento de programação.
Exemplo prático: Imagine que você precisa analisar todas as publicações sobre "políticas públicas" dos últimos anos. Fazer isso manualmente levaria semanas. Com o RasPe, você consegue em minutos.
O RasPe automatiza a coleta de dados de fontes oficiais brasileiras:
- 🏛️ Presidência da República - Leis, decretos e legislação federal
- 📋 Câmara dos Deputados - Proposições e projetos de lei
- 📜 Senado Federal - Projetos de lei e atividade legislativa
- ⚖️ CNJ (Conselho Nacional de Justiça) - Comunicados e normas
- 📊 IPEA - Estudos e pesquisas econômicas aplicadas
- 📰 Folha de São Paulo - Notícias e artigos do jornal brasileiro
- 🗽 New York Times - Artigos do jornal americano (requer API key gratuita)
O resultado: Todos os dados organizados em tabelas prontas para análise no Excel, Python, R ou qualquer ferramenta de sua preferência.
Você precisará ter o Python instalado no seu computador. Se ainda não tem:
- Windows/Mac: Baixe em python.org/downloads (versão 3.11 ou superior)
- Linux: Geralmente já vem instalado. Se não, use:
sudo apt install python3 python3-pip
Abra o terminal (no Windows, procure por "Prompt de Comando" ou "PowerShell") e digite:
pip install git+https://github.com/bdcdo/raspe.gitPronto! O RasPe está instalado e pronto para uso.
# 1. Importar a biblioteca
import raspe
# 2. Criar um raspador para a Presidência da República
presidencia = raspe.presidencia()
# 3. Buscar dados (isso pode levar alguns minutos)
dados = presidencia.raspar(pesquisa="meio ambiente")
# 4. Salvar os resultados em Excel
dados.to_excel("leis_meio_ambiente.xlsx", index=False)
# Pronto! Agora você tem um arquivo Excel com todos os resultadosimport raspe
camara = raspe.camara()
dados = camara.raspar(pesquisa="educação")
# Salvar em Excel
dados.to_excel("projetos_educacao.xlsx", index=False)import raspe
# Buscar três temas diferentes ao mesmo tempo
senado = raspe.senado()
dados = senado.raspar(pesquisa=["educação", "saúde", "segurança"])
# O resultado terá uma coluna 'termo_busca' identificando cada tema
dados.to_excel("projetos_multiplos.xlsx", index=False)import raspe
# Buscar apenas as primeiras 5 páginas (para testar rapidamente)
cnj = raspe.cnj()
dados = cnj.raspar(pesquisa="resolução", paginas=range(1, 6))
dados.to_excel("cnj_teste.xlsx", index=False)Após executar o código, você terá um DataFrame (uma tabela) com os dados coletados. Você pode:
- Visualizar na tela:
print(dados.head())- mostra as primeiras linhas - Salvar em Excel:
dados.to_excel("meus_dados.xlsx", index=False) - Salvar em CSV:
dados.to_csv("meus_dados.csv", index=False) - Ver quantas linhas:
print(len(dados))- mostra o número total de registros - Ver as colunas:
print(dados.columns)- mostra quais informações foram coletadas
- Abra um editor de texto (pode ser o Bloco de Notas, mas recomendo o Visual Studio Code)
- Crie um novo arquivo chamado
minha_pesquisa.py - Cole um dos exemplos acima
- Salve o arquivo
- Abra o terminal na pasta onde salvou o arquivo
- Digite:
python minha_pesquisa.py - Aguarde a coleta (pode levar de alguns minutos a horas, dependendo da busca)
- O arquivo Excel aparecerá na mesma pasta
Abra o arquivo Excel gerado e analise os dados com as ferramentas que você já conhece!
| Fonte | Comando | O que busca |
|---|---|---|
| Presidência | raspe.presidencia() |
Leis, decretos e legislação federal |
| Câmara | raspe.camara() |
Proposições e projetos de lei da Câmara |
| Senado | raspe.senado() |
Projetos de lei e atividades do Senado |
| CNJ | raspe.cnj() |
Comunicados e normas do CNJ |
| IPEA | raspe.ipea() |
Publicações e estudos do IPEA |
| Folha | raspe.folha() |
Notícias da Folha de São Paulo |
| NYT | raspe.nyt(api_key="...") |
Artigos do New York Times (requer API key) |
O raspador da Folha de São Paulo permite buscar notícias por termo de pesquisa, filtrar por tipo de conteúdo e período.
import raspe
# Criar raspador
folha = raspe.folha()
# Busca simples
dados = folha.raspar(pesquisa="educação")
# Busca com filtros
dados = folha.raspar(
pesquisa="reforma tributária",
site="online", # 'todos', 'online' ou 'jornal'
data_inicio="2024-01-01",
data_fim="2024-12-31"
)
# Salvar resultados
dados.to_excel("noticias_folha.xlsx", index=False)| Parâmetro | Descrição | Valores |
|---|---|---|
pesquisa |
Termo de busca | Texto livre |
site |
Tipo de conteúdo | 'todos' (padrão), 'online', 'jornal' |
data_inicio |
Data inicial | YYYY-MM-DD, DD/MM/YYYY ou YYYYMMDD |
data_fim |
Data final | YYYY-MM-DD, DD/MM/YYYY ou YYYYMMDD |
- link: URL da notícia
- titulo: Título da matéria
- resumo: Resumo/lead da notícia
- data: Data de publicação
O raspador do New York Times utiliza a API oficial do jornal, que requer uma chave de acesso gratuita.
- Acesse developer.nytimes.com/get-started
- Crie uma conta gratuita
- Crie um novo "App" e ative a "Article Search API"
- Copie sua API key
import raspe
# Criar raspador com sua API key
nyt = raspe.nyt(api_key="sua-api-key-aqui")
# Busca simples
dados = nyt.raspar(texto="climate change", ano=2024)
# Busca com intervalo de datas
dados = nyt.raspar(
texto="Brazil",
data_inicio="2024-01-01",
data_fim="2024-06-30"
)
# Busca com filtros avançados (seção específica)
dados = nyt.raspar(
texto="election",
ano=2024,
filtro='section.name:"Politics"'
)
# Salvar resultados
dados.to_excel("artigos_nyt.xlsx", index=False)- 10 resultados por página, máximo de 1000 resultados por busca
- Rate limit: 5 requisições por minuto, 500 por dia
- Se precisar de mais resultados, divida sua busca por intervalos de datas
O RasPe tenta novamente automaticamente quando encontra problemas temporários de conexão ou quando o servidor está sobrecarregado. Você não precisa fazer nada - é tudo automático.
Quando usar datas (como data_inicio e data_fim), você pode usar qualquer um destes formatos:
2024-01-15(ano-mês-dia)15/01/2024(dia/mês/ano)20240115(sem separadores)
Sim! Os exemplos acima são tudo que você precisa. Basta copiar, colar e mudar o termo de busca.
Depende da busca. Termos genéricos podem ter milhares de resultados e levar horas. Comece testando com paginas=range(1, 6) para ver uma amostra rápida.
Em tabelas (DataFrames do Pandas), que você pode exportar para Excel, CSV, ou qualquer formato que precise.
Sim. O RasPe acessa os sites oficiais para coletar os dados em tempo real.
Sim! Todos os dados coletados são públicos e disponibilizados pelos próprios órgãos oficiais. O RasPe apenas automatiza o que você faria manualmente.
Os erros mais comuns são:
- "ModuleNotFoundError": O RasPe não foi instalado corretamente. Reinstale com
pip install git+https://github.com/bdcdo/raspe.git - "Timeout": O site demorou para responder. Tente novamente mais tarde.
- "No results found": Não há resultados para sua busca. Tente outros termos.
Encontrou um bug? Tem uma sugestão? Abra uma issue no GitHub ou envie um email.
Este projeto é de código aberto sob a Licença MIT. Isso significa que você pode usar livremente em sua pesquisa, inclusive em publicações.
Bruno da Cunha de Oliveira Email: [email protected] GitHub: github.com/bdcdo/raspe
Se você usar o RasPe em artigos, dissertações ou teses, considere citá-lo:
@software{raspe2025,
author = {Oliveira, Bruno da Cunha de},
title = {RasPe: Raspadores para Pesquisas Acadêmicas},
year = {2025},
url = {https://github.com/bdcdo/raspe}
}Formato ABNT:
OLIVEIRA, Bruno da Cunha de. RasPe: Raspadores para Pesquisas Acadêmicas. 2025.
Disponível em: https://github.com/bdcdo/raspe. Acesso em: [data].