Coleta e organização de dados

Oficina 2 - Prof Eric Brasil

quarta-feira, 17 de setembro de 2025

Eu, robô?

Abundância ou escassez?

  • Plataformas digitais:
    • cada vez mais dados digitais;
    • cada vez mais fechadas ao acesso sistemático?
  • APIs públicas inexistentes, restritas ou mal documentadas.
  • LLMs geram medo com a coleta massiva de dados?
  • Precisamos desenvolver estratégias próprias para coletar, organizar e analisar dados.

Objetivos da Oficina

  • Refletir sobre estratégias de coleta segundo o tipo de fonte.
  • Experimentar ferramentas práticas de coleta.
  • Apresentar formas de organizar dados para análise em História Digital.

Exemplo 1: Instaloader — coletando dados do Instagram

Link: https://instaloader.github.io/

Pré-requisitos

Criar e ativar venv (Linux / macOS)

# criar venv
python3 -m venv .venv

# ativar (bash / zsh)
source .venv/bin/activate

# atualizar pip e instalar instaloader
pip install --upgrade pip
pip install instaloader

Windows (PowerShell)

# criar e ativar venv
python -m venv .venv
.\.venv\Scripts\Activate.ps1

# atualizar pip e instalar instaloader
python -m pip install --upgrade pip
python -m pip install instaloader

Login — iniciar sessão (faz o prompt de senha)

# faz login interativo (um modo seguro de autenticar)
instaloader --login=ericbrasiln

Ao fazer login, o Instaloader mantém uma sessão local (cache) para evitar repetir autenticação.

Baixar um perfil inteiro (posts + metadados)

# baixa todas as publicações do perfil <perfil>
instaloader profile <perfil>

Contornando bloqueios de autenticação usando cookies do navegador

  1. Faça login no Instagram no navegador (Firefox ou LibreWolf).
  2. Use a opção --load-cookies do Instaloader (carrega cookies do Firefox):
# usar cookies do Firefox (nome do perfil do Firefox como parâmetro)
instaloader --load-cookies Firefox profile <perfil>

Opções de coletqa — posts, comentários, reels e stories

instaloader --load-cookies Firefox profile <perfil>\
    --reels --comments :stories --fast-update
  • --reels → inclui Reels.
  • --comments → baixa comentários.
  • :stories → baixa stories (quando disponíveis).
  • --fast-update → baixa somente itens novos (mais rápido/incremental).

Exemplo 2: coleta de vídeos com yt-dlp

Ferramenta poderosa para baixar vídeos e metadados de várias plataformas, inclusive o YouTube.
(Pode ser usada para playlists, canais inteiros ou apenas 1 vídeo).

Instalação

# Windows
pip install yt-dlp

# Linux (recomendado em venv)
python -m venv .venv
source .venv/bin/activate
pip install yt-dlp

Baixando um vídeo de um perfil/canal

# Baixa apenas o primeiro vídeo do canal/perfil
yt-dlp --max-downloads 1 https://www.youtube.com/@NOME_DO_CANAL

Baixando com metadados completos

# Salva vídeo + JSON com metadados
yt-dlp --max-downloads 3 -o "%(title)s.%(ext)s" -j --write-info-json https://www.youtube.com/@NOME_DO_CANAL

Outras opções úteis

  • --format bestvideo+bestaudio → pega melhor qualidade disponível.
  • --skip-download → baixa só metadados.
  • --write-comments → baixa comentários (quando suportado).
  • --playlist-items 1,3,5 → escolhe vídeos específicos de uma lista.

Exemplo 3: Raspagem em Python

Ferramentas e scripts acadêmicos

  • ferramentas_scielo_v2 → coleta artigos e metadados do SciELO.
  • resumos_anpuh_cli → coleta de resumos de simpósios temáticos da ANPUH.
  • pyHDB → raspagem estruturada da Hemeroteca Digital Brasileira.

Exemplo: coleta SciELO com ferramentas_scielo_v2

Ferramenta desenvolvida pelo LABHDUFBA para raspagem sistemática dos periódicos da SciELO.

Permite coletar artigos por área de conhecimento ou por revista(s) específicas.

Passo 1 — Clonar o repositório

git clone https://github.com/LABHDUFBA/ferramentas_scielo_v2.git
cd ferramentas_scielo_v2

Passo 2 — Criar ambiente virtual

# Linux/macOS
python3 -m venv .venv
source .venv/bin/activate

# Windows (PowerShell)
python -m venv .venv
.\.venv\Scripts\Activate.ps1

Passo 3 — Instalar dependências

pip install --upgrade pip
pip install -r requirements.txt

Passo 4 — Raspagem por área de conhecimento

python3 scielo_v2.py

O programa exibirá as áreas disponíveis.

Digite o número desejado (ex.: 5 para Ciências Humanas) e escolha:

  1. baixar apenas XML
  2. baixar XML + PDFs

Novo recurso: filtro por ano

Agora é possível filtrar a coleta por ano mínimo de publicação.

Durante a execução, o script perguntará:

-=- Definição de filtro por ano -=-
Deseja filtrar por ano mínimo? (s/n): s
Filtrar edições a partir de qual ano? [2023]: 2025

No exemplo acima, apenas artigos publicados a partir de 2025 serão baixados.

Passo 5 — Raspagem por revista

python3 scielo_rev_v2.py

Informe a abreviação da revista, conforme aparece na URL do SciELO. Exemplo: Almanackhttps://www.scielo.br/j/alm/ → abreviação: alm.

Avisos importantes

  • XMLs possuem metadados completos (texto integral + referências).
  • PDFs demandam muito tempo e espaço (milhares de artigos).
  • A raspagem cria pastas scielo/{AAAA-MM-DD}/XML/ e .../PDF/.
  • Em execuções posteriores, só baixa arquivos novos (incremental).

Exemplo 4: Registro da coleta

  • Registrar como, quando e de onde os dados foram coletados.
  • Scripts em Python podem automatizar esse processo.

📎 Exemplo prático – Hemeroteca Digital

Organização dos dados

  • Metadados → quem, quando, onde, como.
  • Formatos estruturados: CSV, JSON, XML.
  • Ferramentas de apoio:
    • Zotero (referências)
    • Planilhas (Excel, LibreOffice)
    • Python / R (limpeza e análise)
    • Git/GitHub (versionamento e compartilhamento)

Para refletir

  • Como equilibrar ética, legalidade e necessidade de pesquisa?
  • Quais fontes podemos e não podemos coletar?
  • Como documentar a coleta para garantir transparência e reprodutibilidade?