Raspagem de Dados com IA: Extração LLM, Prompt-para-JSON e Custo

A extração LLM transforma qualquer página em JSON limpo a partir de um prompt em inglês simples — sem seletores para manter. Mas o modelo não pode buscar a página e o HTML bruto consome tokens rapidamente. Aqui está como fazer isso corretamente.

Raspagem de dados com IA significa apontar um modelo de linguagem para uma página e pedir, em inglês simples, os campos que você deseja de volta como JSON — sem escrever seletores CSS, sem manter um parser quando o layout muda. É genuinamente transformador para extrações confusas, variadas ou únicas. Também é amplamente mal compreendido, razão pela qual as pessoas acabam pagando para raspar algumas centenas de páginas e recebem dados alucinados de volta. Dois fatos resolvem a maior parte dessa confusão: um modelo de linguagem não pode buscar uma página da web — ele apenas raciocina sobre o texto que você fornece — e alimentá-lo com HTML bruto é a maneira mais rápida de consumir seu orçamento de tokens. Este guia cobre o padrão de extração que funciona, quando supera seletores, e como manter tanto o custo quanto a alucinação sob controle.

O que ninguém diz: o modelo não pode buscar

A parte difícil da raspagem com IA não é a IA. Um chatbot não pode carregar uma página ao vivo de forma confiável — ele precisa de um mecanismo dedicado para buscar o HTML primeiro, depois ele raciocina sobre o texto que você fornece. Assim, um pipeline de extração LLM é realmente um pipeline de raspagem com um parser inteligente acoplado no final, e a metade de raspagem é onde as coisas quebram: gerenciamento de bots, renderização de JavaScript, bloqueios de IP. Resolva a busca com proxies e uma camada de renderização, e a extração se torna a parte fácil. A maneira limpa de obter páginas é uma API de raspagem que lida com rotação e renderização e retorna markdown, que — como a próxima seção mostra — também é a entrada mais barata possível para um modelo:

import requests

def fetch_markdown(url, api_key):
    r = requests.get(
        "https://api.quantumproxies.io/scrape",
        params={"url": url, "render": "auto", "output": "markdown"},
        headers={"Authorization": f"Bearer {api_key}"},
        timeout=(5, 40),
    )
    r.raise_for_status()
    return r.json()["markdown"]  # nav/ads stripped, ready for the model

Por que markdown, não HTML, é o verdadeiro fator de custo

O maior fator de custo da raspagem com IA é quantos tokens você passa pelo modelo, e HTML bruto é principalmente tokens que você não quer: estilos inline, tags de script, atributos de rastreamento, navegação, rodapés. Converta a página para markdown limpo — ou extraia apenas o conteúdo principal — antes da extração e você rotineiramente reduz o tamanho da entrada por uma ordem de magnitude, o que reduz o custo pelo mesmo fator e, como bônus, reduz a alucinação porque o modelo vê o conteúdo em vez do chrome. É por isso que markdown-primeiro é o padrão para alimentar modelos, o mesmo princípio por trás de alimentar LLMs com dados frescos da web. Se você só levar uma coisa deste artigo: nunca envie a fonte bruta da página para um modelo.

Diagrama do pipeline de extração LLM: busque a página com proxies ou uma API de raspagem, limpe para markdown, faça o prompt com um esquema, depois valide a saída JSON
O modelo nunca toca a web ao vivo. A busca e limpeza acontecem primeiro, markdown reduz a conta de tokens, e um esquema mantém o JSON honesto.

Prompt-para-JSON com um esquema

Uma vez que você tem texto limpo, a extração é uma única chamada: descreva os campos que você deseja, passe um esquema para que a saída seja estruturada, e instrua o modelo a retornar null em vez de inventar quando um campo está ausente. Uma API de extração colapsa busca, limpeza e extração em uma única solicitação para que você pule toda a infraestrutura:

curl -X POST "https://api.quantumproxies.io/extract" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/product/xyz",
    "schema": {
      "title":  "string",
      "price":  "number",
      "in_stock": "boolean",
      "rating": "number|null"
    },
    "prompt": "Extract the product. Use null for anything not present."
  }'

O esquema tem dupla função: força uma forma previsível para o código a jusante, e restringe o modelo, que é a primeira linha de defesa contra campos alucinados. Valide a resposta contra o mesmo esquema e rejeite qualquer coisa que não se encaixe — um preço inventado é pior do que um ausente.

def validate(record, schema):
    for field, kind in schema.items():
        v = record.get(field)
        if v is None and "null" not in kind:
            raise ValueError(f"missing required field: {field}")
    return record  # only trust records that satisfy the schema

Quando a extração LLM supera seletores CSS — e quando não

A extração com IA não é uma atualização universal; é uma ferramenta diferente com uma curva de custo diferente. Use-a quando o trabalho for variado ou instável — raspando mil sites com mil layouts, um site que redesenha constantemente, conteúdo não estruturado como avaliações ou listagens onde não existe um seletor limpo, ou um trabalho único onde escrever seletores não vale a pena. Fique com seletores CSS ou XPath quando você estiver focando em um site estável em alto volume: seletores são determinísticos, efetivamente gratuitos por página, e nunca alucinam. O padrão maduro é híbrido — seletores para seus alvos principais de alto volume, extração LLM para o longo rabo e os sites que continuam mudando.

Disciplina de custo transforma isso de um experimento em produção. Além de markdown-primeiro, faça cache agressivamente para nunca re-extrair uma página inalterada, combine o tamanho do modelo com a dificuldade da tarefa — um modelo pequeno lida bem com extração de campos simples — e agrupe onde a API permitir. Renderização é seu próprio item de linha; só renderize páginas que realmente precisam de JavaScript, uma decisão que quantificamos em renderize apenas quando necessário. Obtenha uma página em branco em vez de conteúdo e a correção geralmente é renderização, coberta em página vazia, dados ausentes.

Uma palavra sobre a rota gratuita e de código aberto, já que é o que a maioria das pessoas procura primeiro. Bibliotecas de extração de código aberto são excelentes para aprender o padrão e para pequenos trabalhos, mas elas devolvem os dois problemas difíceis com os quais este artigo começou: você ainda precisa buscar páginas além do gerenciamento de bots, e ainda paga pelo modelo que faz a extração. 'Grátis' geralmente significa código gratuito mais suas próprias contas de proxy e tokens. Essa é uma troca justa para um projeto de hobby ou uma prova de conceito; em volume de produção, a manutenção da camada de busca é exatamente o que as equipes acabam terceirizando, uma decisão de construir versus comprar que detalhamos em pilha de raspagem DIY vs uma API de raspagem.

Comparação de extração LLM versus seletores CSS, mostrando a abordagem flexível por token contra a abordagem determinística barata para sites estáveis de alto volume
A extração LLM vence em sites variados e em mudança; seletores vencem em um alvo estável único em alto volume. A maioria dos pipelines reais usa ambos.

Perguntas frequentes

O ChatGPT pode raspar um site?

Não sozinho. Um modelo de linguagem não pode buscar e renderizar uma página ao vivo de forma confiável — ele raciocina sobre o texto que você fornece. Para usar IA para raspagem, você combina um motor de raspagem dedicado, que busca e limpa a página, com o modelo, que extrai dados estruturados do resultado. O motor de raspagem lida com proxies, renderização e bloqueios; o modelo lida com a conversão de conteúdo em JSON.

Como posso reduzir o custo da raspagem de dados com IA?

Converta páginas para markdown ou extraia o conteúdo principal antes de enviar qualquer coisa para um modelo — HTML bruto pode ser dez vezes os tokens para a mesma informação. Em seguida, faça cache de páginas inalteradas, use um modelo menor para extração de campos simples, só renderize JavaScript quando uma página exigir, e agrupe solicitações. O volume de tokens é o custo dominante, então reduzir o tamanho da entrada é a otimização de maior alavancagem.

A raspagem de dados com IA alucina dados errados?

Pode, especialmente quando alimentada com HTML bruto ruidoso ou quando solicitada por campos que não estão na página. Proteja-se contra isso limpando a entrada, passando um esquema explícito, instruindo o modelo a retornar null quando um valor estiver ausente, e validando cada resposta contra esse esquema antes de confiar nela. Um campo ausente você pode tentar novamente; um inventado com confiança corrompe silenciosamente seu conjunto de dados.

A extração LLM é melhor que seletores CSS?

Depende do trabalho. A extração LLM vence quando os layouts variam ou mudam frequentemente e quando escrever seletores não vale a pena, porque não precisa de seletores e sobrevive a redesenhos. Seletores CSS vencem em um único site estável em alto volume: são determinísticos e muito mais baratos por página. A maioria dos pipelines de produção usa seletores para alvos principais e extração LLM para o longo rabo.

A raspagem de dados com IA é poderosa uma vez que você para de tratar o modelo como um raspador. Busque de forma limpa com proxies, alimente markdown em vez de HTML, restrinja a saída com um esquema, e reserve a extração LLM para os trabalhos onde sua flexibilidade justifica seu custo de tokens. Essa é a diferença entre uma demonstração elegante e um pipeline que você pode executar todos os dias.

Transforme qualquer página em JSON com a Extract API