O que universal-data-acquisition-pipeline-skill faz?
Skill do Codex/Claude para projetar pipelines robustos de scraping, API, Playwright e aquisição autorizada de dados.
Visão Geral
Este skill fornece um conjunto de diretrizes e exemplos para construir pipelines de aquisição de dados abrangendo:
- Scraping estático: Extração de HTML estruturado e parsing DOM.
- Scraping dinâmico: Uso de Playwright para interagir com sites com JavaScript pesado.
- APIs: Consumo de APIs REST e GraphQL com autenticação e rate limiting.
- Acesso autorizado: Integração com serviços que exigem tokens, OAuth2 ou outras credenciais.
Como Usar
No contexto do Codex ou Claude, invoque este skill mencionando seu nome ou ID. O agente irá:
- Analisar o requisito de aquisição de dados.
- Recomendar a abordagem técnica mais adequada (scraping vs. API).
- Gerar código modular, reutilizável e bem documentado.
- Incluir tratamento de erros, logs e estratégias de retry.
- Fornecer instruções de configuração e dependências.
Estrutura do Pipeline
Um pipeline típico segue este fluxo:
- Inicialização: Carregar configurações e credenciais.
- Extração: Coletar dados (via HTTP, Playwright, etc.).
- Transformação: Limpar, validar e estruturar os dados.
- Carga: Armazenar em arquivos, bancos de dados ou sistemas externos.
- Monitoramento: Logs, métricas e alertas.
Exemplos de Uso
Scraping Estático
import requests
from bs4 import BeautifulSoup
def scrape_static(url):
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
items = []
for item in soup.select('div.item'):
items.append({
'title': item.select_one('h2').text.strip(),
'price': item.select_one('.price').text.strip()
})
return items
Automação com Playwright
from playwright.sync_api import sync_playwright
def scrape_dynamic(url):
with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
page = browser.new_page()
page.goto(url)
# Esperar por elemento dinâmico
page.wait_for_selector('div.result')
data = page.eval_on_selector_all('div.result', 'elements => elements.map(el => el.textContent)')
browser.close()
return data
Boas Práticas
- Respeite robots.txt e termos de serviço.
- Use delays entre requisições para não sobrecarregar servidores.
- Gerencie autenticação de forma segura (variáveis de ambiente).
- Implemente tratamento de erros robusto com fallback.
- Log e monitore cada etapa do pipeline.
Dependências Comuns
requests,beautifulsoup4para scraping estático.playwrightpara automação de navegador.httpxpara chamadas assíncronas a APIs.pandaspara transformação de dados.python-dotenvpara gerenciamento de credenciais.
Licença
Este skill é distribuído sob a licença MIT.