🎯 Um navegador em nuvem personalizável e anti-detecção alimentado por Chromium desenvolvido internamente, projetado para rastreadores web e agentes de IA. 👉Experimente agora
De volta ao blog

DeepSeek Web Scraping: Transforme HTML de Table-Soup em JSON Limpo

James Thompson
James Thompson

Scraping and Proxy Management Expert

29-Jul-2026

Resumo:

  • DeepSeek é o motor de extração econômico, e ganha o título em markup bagunçado. Uma execução ao vivo neste guia extraiu 10 registros estruturados — texto, autor, lista de tags — de uma página de tabela aninhada para 3.397 tokens em um modelo com preço abaixo de um centavo por milhão de tokens de entrada.
  • A API é uma troca de base_url. O endpoint do DeepSeek é compatível com OpenAI: o SDK oficial do OpenAI Python apontando para https://api.deepseek.com com modo JSON ativado é toda a integração.
  • Os nomes dos modelos mudaram recentemente — a maioria dos tutoriais está desatualizada. Os modelos atuais são deepseek-v4-flash e deepseek-v4-pro; os longamente familiares nomes deepseek-chat e deepseek-reasoner estão obsoletos desde 24-Jul-2026.
  • O modelo ainda não pode buscar. Renderização, sessões e desafios de acesso pertencem a uma camada de busca; a deste guia é um POST por página através da API Universal Scraping da Scrapeless.
  • Sem a chave DeepSeek ainda? A solicitação idêntica é executada através do OpenRouter. Este guia a executou ao vivo em deepseek/deepseek-v4-flash e mostra a saída capturada.
  • Gratuito para começar do lado da busca. Crie sua chave API da Scrapeless em app.scrapeless.com.

O DeepSeek consegue extrair sites?

O DeepSeek lê páginas; ele não as recupera. A API recebe o texto que você já buscou e retorna os campos que você nomeia — e, como seu preço por token está na parte inferior do mercado, é o modelo que as pessoas buscam quando a extração precisa rodar em muitas páginas. Buscar essas páginas, renderizar seu JavaScript e sobreviver a seus controles de acesso é uma camada separada que nenhum endpoint de conclusão de chat fornece.

Onde o DeepSeek brilha é no markup que você menos gostaria de analisar manualmente. HTML semântico é gentil com os seletores; páginas reais muitas vezes não são. O alvo da demonstração neste guia é uma página de citações renderizada inteiramente como tabelas aninhadas — sem classes nas células de dados, texto de citação, autores e tags intercalados linha por linha — o tipo de estrutura onde a lógica de seletores se transforma em aritmética de contagem de linhas que morre na próxima reformulação. Um modelo de linguagem não se importa: ele lê a tabela da mesma maneira que uma pessoa.

O plano: buscar a página de sopa de tabelas uma vez com uma camada de busca controlada, e então ter o DeepSeek retornando JSON limpo. Se seu interesse é a categoria de ferramentas mais ampla, o explicador sobre scrapers LLM e a lista classificada de scrapers LLM mapeiam o campo.

Instalação

Um SDK cobre tanto o caminho nativo quanto o caminho do agregador, além de requests para buscar:

bash Copy
pip install "openai==2.34.0" requests

Configuração

bash Copy
export DEEPSEEK_API_KEY="sk-sua_chave_deepseek"
export SCRAPELESS_API_KEY="sk_sua_chave_scrapeless"

Busque a página que ninguém quer analisar

O alvo é uma renderização baseada em tabela de um site público de citações construído para prática de scraping. Um POST para a API Universal Scraping a retorna com renderização e desbloqueio tratados no lado do servidor:

python Copy
# fetch_tableful.py — recuperar a página de sopa de tabelas através da Scrapeless
import os

import requests

resp = requests.post(
    "https://api.scrapeless.com/api/v1/unlocker/request",
    headers={
        "Content-Type": "application/json",
        "x-api-token": os.environ["SCRAPELESS_API_KEY"],
    },
    json={
        "actor": "unlocker.webunlocker",
        "input": {"url": "https://quotes.toscrape.com/tableful/", "method": "GET"},
    },
    timeout=120,
)
resp.raise_for_status()
html = resp.json().get("data", "")
print(f"buscou {len(html):,} caracteres")
print("elementos de tabela:", html.count("<table"), "| linhas de tabela:", html.count("<tr"))

with open("page.html", "w", encoding="utf-8") as f:
    f.write(html)

A execução imprime uma <table> e 22 linhas <tr> para o que é conceitualmente dez registros com tags — linhas de citações e linhas de tags se alternando, exatamente a forma que a especificação de tabelas HTML permite e que os autores de seletores temem.

Implementação básica: DeepSeek como extractor

A integração é o SDK da OpenAI com dois valores específicos do DeepSeek: a URL base e o nome do modelo. O modo JSON (response_format={"type": "json_object"}) e temperature=0 tornam a saída analisável e estável — os parâmetros estão documentados em a referência da API DeepSeek. Use os nomes dos modelos atuais: deepseek-v4-flash para trabalho de extração, deepseek-v4-pro quando você realmente precisar de mais modelo; os nomes mais antigos deepseek-chat e deepseek-reasoner estão obsoletos desde 24-Jul-2026.

Nota: Este bloco precisa de uma DEEPSEEK_API_KEY com crédito — o único pré-requisito que este guia não assume. A próxima seção executa a extração idêntica ao vivo através do OpenRouter, com saída capturada.

python Copy
# extract_deepseek.py — extração nativa DeepSeek (requer DEEPSEEK_API_KEY)
import json
import os

from openai import OpenAI

client = OpenAI(
    base_url="https://api.deepseek.com",
    api_key=os.environ["DEEPSEEK_API_KEY"],
)

page_html = open("page.html", encoding="utf-8").read()

completion = client.chat.completions.create(
    model="deepseek-v4-flash",
    temperature=0,
    response_format={"type": "json_object"},
    messages=[
        {
            "role": "system",
            "content": 'Extraia cada citação desta página baseada em tabela. Responda SOMENTE com JSON: '
            '{"quotes":[{"text":str,"author":str,"tags":[str]}]}.',
        },
        {"role": "user", "content": page_html},
    ],
)

data = json.loads(completion.choices[0].message.content)
print(f"extraídos {len(data['quotes'])} citações da marcação da tabela")

Sem aritmética de linha, sem XPath de eixo irmão — o esquema nomeia a saída e o modelo faz a leitura.

Sem chave DeepSeek? Execute através do OpenRouter

Como ambas as superfícies têm formato da OpenAI, a variante agregadora difere por duas strings. Esta é a versão que este guia executou de verdade, busca e extração em um único script autônomo:

python Copy
# extract_openrouter.py — a mesma extração, executada via OpenRouter
import json
import os

import requests
from openai import OpenAI

resp = requests.post(
    "https://api.scrapeless.com/api/v1/unlocker/request",
    headers={
        "Content-Type": "application/json",
        "x-api-token": os.environ["SCRAPELESS_API_KEY"],
    },
    json={
        "actor": "unlocker.webunlocker",
        "input": {"url": "https://quotes.toscrape.com/tableful/", "method": "GET"},
    },
    timeout=120,
)
resp.raise_for_status()
page_html = resp.json().get("data", "")

client = OpenAI(
    base_url="https://openrouter.ai/api/v1",
    api_key=os.environ["OPENROUTER_API_KEY"],
)

completion = client.chat.completions.create(
    model="deepseek/deepseek-v4-flash",
    temperature=0,
    response_format={"type": "json_object"},
    messages=[
        {
            "role": "system",
            "content": 'Extraia cada citação desta página baseada em tabela. Responda SOMENTE com JSON: '
            '{"quotes":[{"text":str,"author":str,"tags":[str]}]}.',
        },
        {"role": "user", "content": page_html},
    ],
)

data = json.loads(completion.choices[0].message.content)
print(f"extraídos {len(data['quotes'])} citações da marcação da tabela")
print(json.dumps(data["quotes"][0], ensure_ascii=False))

A execução ao vivo extraiu todos os 10 registros da sopa da tabela, o primeiro:

text Copy
extraídos 10 citações da marcação da tabela
{"text": "O mundo como o criamos é um processo do nosso pensamento. Não pode ser mudado sem mudar nosso pensamento.", "author": "Albert Einstein", "tags": ["mudança", "pensamentos profundos", "pensamento", "mundo"]}

As tags vieram como arrays, embora a página as renderize em uma linha separada da citação em si — o modelo associou cada linha de tag com a linha de citação acima, que é exatamente a junção que um script seletor deve codificar manualmente. A chamada inteira: 3.397 tokens.

Obtenha sua chave de API no plano gratuito: app.scrapeless.com

Padrões avançados

  • Reserve o modelo para páginas que merecem. DeepSeek é barato por token, e um script seletor ainda é mais barato: gratuito. Roteie layouts limpos e estáveis para código seletor gerado e revisado e gaste chamadas de modelo na sopa de tabela, naqueles sensíveis a redesign e na cauda longa.
  • Declare a semântica das linhas quando souber. Nesta página, o prompt não precisava disso, mas em tabelas mais difíceis, uma frase — "cada registro abrange duas linhas: dados, depois etiquetas" — garante precisão mais barata do que um modelo maior.
  • Mantenha uma página por chamada e faça loop em Python. Os limites das páginas são os limites dos registros; o agrupamento do lado do prompt os desfoca.
  • Fique de olho no calendário de obsolescência. Os nomes dos modelos fixos envelhecem. deepseek-chat funcionou por um longo período e para de funcionar em 24-Jul-2026 — coloque os ids dos modelos na configuração, não em dez scripts.

Resolução de problemas

  • modelo_não_encontrado ou similar no endpoint nativo. Você provavelmente está enviando um nome de modelo obsoleto; mude para deepseek-v4-flash ou deepseek-v4-pro.
  • Prosa em vez de JSON. O modo JSON está desligado — defina response_format={"type": "json_object"} e mantenha o esquema na mensagem do sistema.
  • Mesclagem de registros ou tags caem na citação errada. Adicione a frase de semântica de linha à mensagem do sistema e verifique se o HTML recuperado realmente contém as linhas que você espera, da maneira como o script de recuperação as conta.
  • A saída varia entre as execuções. temperature=0. A extração é uma tarefa de transcrição, não uma tarefa de escrita.

Conclusão

O caso do DeepSeek para a camada de extração é aritmética mais tolerância: preços de tokens no fundo do mercado e nenhuma preocupação com markup que pune a lógica do seletor. A demonstração da tabela é a prova — 10 registros com arrays de tags corretamente unidas a partir de linhas anônimas <tr>, para 3.397 tokens. O que o modelo não pode fornecer é a página em si, renderizada e acessível; um POST do lado do servidor por página cobre esse lado, e as duas camadas juntas formam um scraper que custa quase nada para rodar e pouco para manter quando o markup muda.

Pronto para alimentar o DeepSeek com páginas reais?

A camada de recuperação aqui é a Universal Scraping API — planos e volumes de solicitação estão na página de preços, com cada parâmetro unlocker.webunlocker na documentação do desenvolvedor. Crie uma chave no plano gratuito em app.scrapeless.com e ambos os scripts funcionam como escrito.

FAQ

Q: O DeepSeek pode raspar sites por conta própria?

Não. A API do DeepSeek é um endpoint de modelo de linguagem: ela extrai de texto que você fornece e não pode emitir solicitações, renderizar JavaScript ou manter sessões. Cada configuração de raspagem do DeepSeek funciona em parceria com uma camada de recuperação que retorna conteúdo de página fiel.

Q: Qual modelo do DeepSeek devo usar para raspagem na web?

deepseek-v4-flash para extração — a execução ao vivo neste guia o utilizou e retornou todos os 10 registros com joins de tag corretos. Acesse deepseek-v4-pro apenas quando a entrada limpa ainda produzir campos errados. Evite os nomes obsoletos deepseek-chat e deepseek-reasoner em novo código.

Q: Por que usar DeepSeek em vez de um modelo de nome maior para extração?

Preço com igual adequação. A extração com esquema limitado a temperature=0 é uma tarefa com limites que a maioria dos modelos atuais passa; quando todos passam, o modelo mais barato vencedor. A execução medida aqui custou 3.397 tokens em um modelo precificado abaixo de 10 centavos por milhão de tokens de entrada — a esse preço, a extração deixa de ser a parte cara do pipeline.

Q: Quando um script de seletor ainda é melhor que o DeepSeek?

Quando o layout é limpo, estável e de alto volume. Um script de seletor revisado não custa nada por página para sempre; uma chamada ao modelo custa tokens a cada vez. A divisão funcional: seletores para o núcleo estável de seus alvos, DeepSeek para markup emaranhado e layouts que continuam mudando.

Q: É legal raspar com DeepSeek?

O modelo de extração não altera as regras de coleta. Recupere apenas páginas públicas, respeite os termos do site e as diretivas de robots padronizadas pelo Protocolo de Exclusão de Robots, mantenha volumes limitados, e trate quaisquer dados pessoais de acordo com a legislação aplicável — além dos termos de uso do DeepSeek do lado do modelo.

Na Scorretless, acessamos apenas dados disponíveis ao público, enquanto cumprem estritamente as leis, regulamentos e políticas de privacidade do site aplicáveis. O conteúdo deste blog é apenas para fins de demonstração e não envolve atividades ilegais ou infratoras. Não temos garantias e negamos toda a responsabilidade pelo uso de informações deste blog ou links de terceiros. Antes de se envolver em qualquer atividade de raspagem, consulte seu consultor jurídico e revise os termos de serviço do site de destino ou obtenha as permissões necessárias.

Artigos mais populares

Catálogo