🎯 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

Como Construir um Raspador de Notícias: Um Guia Passo a Passo

Daniel Kim
Daniel Kim

Lead Scraping Automation Engineer

30-Jun-2026

TL;DR:

  • Um crawler de notícias é formado por dois loops: descobrir e depois buscar. Extraia links de artigos a partir de uma página inicial de seção, visite cada link e extraia o título e o corpo — mantenha as duas etapas separadas para que cada uma possa ser reexecutada, controlada e escalada de forma independente.
  • A descoberta é um problema de filtragem de links. Uma página inicial é principalmente de navegação; os links dos artigos correspondem a um formato de URL reconhecível (/news/articles/…, um slug que termina em um id). Filtre para esses em vez de capturar cada âncora.
  • Extração significa o núcleo legível, não todo o DOM. Leia o h1 e os parágrafos do artigo; ignore navegação, links relacionados e anúncios. A contagem de parágrafos e o comprimento do texto informam instantaneamente se a busca realmente obteve a história.
  • Sites de notícias geo-roteiam e limitam a taxa. Defina proxyCountry e controle o ritmo da busca para que um varrimento de seção não acione limites anti-bot no meio do caminho.
  • Funciona no Scrapeless Scraping Browser com Puppeteer simples. O navegador em nuvem renderiza páginas iniciais construídas em JS e fornece saída residencial; seu código de crawler é uma navegação e extração comuns.
  • Gratuito para começar. Novas contas Scrapeless incluem execução gratuita do Scraping Browser — inscreva-se em app.scrapeless.com.

Introdução: o que um crawler de notícias realmente faz

Um crawler de notícias transforma uma página inicial de seção em um fluxo de artigos estruturados. Ele realiza duas tarefas distintas. Primeiro, descoberta: leia a página inicial (ou uma seção, ou um sitemap) e colete os links que apontam para histórias reais. Em segundo lugar, busca: visite cada história e extraia o título e o corpo legível, descartando a navegação e os anúncios.

Manter essas duas etapas separadas é o truque. A descoberta é executada uma vez por varrimento e é barata; a busca é executada uma vez por artigo e é onde o verdadeiro trabalho — e o risco de limite de taxa — acontece. Separá-las permite que você colete primeiro uma lista limpa de links, depois busque a um ritmo controlado e re-busque um único artigo sem re-crawler a página inicial.

Este guia constrói o crawler em Node no Scrapeless Scraping Browser — um navegador de nuvem anti-detecção conectado ao Puppeteer por meio de um ponto de extremidade padrão. As etapas de descoberta e extração abaixo foram executadas contra fontes de notícias ao vivo. Apenas conteúdo público.


O Que Você Pode Fazer Com Isso

  • Varrer uma seção (mundo, negócios, tecnologia) em busca dos novos artigos do dia.
  • Extrair corpos de artigos limpos — título mais parágrafos — para análise ou um pipeline de leitura.
  • Alimentar um resumidor ou armazenamento RAG com o texto legível em vez de HTML bruto.
  • Acompanhar um tema reexecutando a descoberta em um cronograma e buscando apenas links novos.
  • Cruzar fontes apontando o mesmo crawler para várias plataformas.

Por Que Scrapeless Scraping Browser

Scrapeless Scraping Browser é um navegador de nuvem personalizável, anti-detecção, projetado para crawlers da web e agentes de IA. Para um crawler de notícias especificamente, ele oferece:

  • Renderização de JS do lado da nuvem — páginas iniciais modernas constroem suas listas de links com JavaScript; o navegador em nuvem executa isso para que os links existam.
  • Proxies residenciais em mais de 195 países — fixe a saída para a região que um site atende e evite que a varredura de seção acione a limitação de taxa.
  • Impressão digital anti-deteção — a busca se comporta como um navegador real, então as páginas de artigos continuam sendo renderizadas ao longo de um longo período.
  • Conexão padrão com PuppeteerPuppeteer.connect() retorna um Browser normal; descoberta e extração são Puppeteer comum.
  • Persistência de sessão — mantenha uma sessão ativa durante toda a varredura.

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


Pré-requisitos

  • Node.js 18 ou mais recente
  • Uma conta Scrapeless e chave de API — inscreva-se em app.scrapeless.com
  • Familiaridade básica com Puppeteer

Instalação

bash Copy
npm install @scrapeless-ai/sdk puppeteer-core
bash Copy
export SCRAPELESS_API_KEY="seu_token_api_aqui"

Etapa 1 — Conectar

javascript Copy
import { Puppeteer } from '@scrapeless-ai/sdk';

const browser = await Puppeteer.connect({
  apiKey: process.env.SCRAPELESS_API_KEY,
  sessionName: 'crawler-de-notícias',
  proxyCountry: 'US',
  sessionTTL: 300,
});

const page = await browser.newPage();

Carregue a página inicial e colete os links que parecem ser artigos. O seletor certo depende do site, mas o princípio é o mesmo em todos os lugares: filtre as âncoras até aquelas que apontam para histórias. Aqui está a página inicial de uma fonte de notícias, pegando os primeiros links de título:

javascript Copy
await page.goto('https://text.npr.org/', {
  waitUntil: 'domcontentloaded',
  timeout: 40000,
});

const links = await page.evaluate(() =>
  [...document.querySelectorAll('ul li a')]
    .map((a) => ({ title: a.textContent.trim(), href: a.href }))
    .filter((l) => l.title),
);
javascript Copy
console.log(links.length, 'links —', links[0]);
// 5 links — { título: '...', href: 'https://text.npr.org/<article-id>' }

Para a maioria dos veículos, você aperta o filtro para um formato de URL — por exemplo, links cujo caminho corresponde a /news/articles/ ou termina em um longo id numérico — assim, links de navegação e seção são excluídos:

javascript Copy
const articleLinks = await page.evaluate(() =>
  [...document.querySelectorAll('a[href]')]
    .filter((a) => /\/news\/(articles\/|[a-z]+-\d{6,})/.test(a.getAttribute('href') || ''))
    .map((a) => a.href),
);

Passo 3 — Buscar e extrair cada artigo

Agora visite cada link e extraia o núcleo legível — o h1 e os parágrafos do corpo. Uma contagem de parágrafos e comprimento do texto são um rápido verificador de integridade de que você obteve uma história e não um redirecionamento ou um stub de paywall:

javascript Copy
async function fetchArticle(page, url) {
  await page.goto(url, { waitUntil: 'domcontentloaded', timeout: 40000 });
  return page.evaluate(() => ({
    title: document.querySelector('h1')?.textContent?.trim(),
    paragraphs: document.querySelectorAll('p').length,
    text: [...document.querySelectorAll('p')].map((p) => p.textContent).join('\n\n'),
  }));
}

const article = await fetchArticle(page, links[0].href);
console.log(article.title, '—', article.paragraphs, 'parágrafos');
// "EUA e Irã anunciam um acordo para acabar com a guerra, reabrir o Estreito de Ormuz" — 40 parágrafos

Essa execução ao vivo retornou um artigo de 40 parágrafos (~5.500 caracteres de texto do corpo) do link do título — título e texto completo, sem chrome de navegação.

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


Passo 4 — Montar o rastreamento

Junte as duas etapas: descubra uma vez, depois busque cada link a um ritmo controlado. Mantenha um conjunto seen para que uma nova execução agendada busque apenas novas histórias:

javascript Copy
const seen = new Set();
const articles = [];

for (const url of articleLinks) {
  if (seen.has(url)) continue;
  seen.add(url);
  try {
    articles.push({ url, ...(await fetchArticle(page, url)) });
  } catch {
    // pule um artigo que não irá renderizar; a varredura continua
  }
  await new Promise((r) => setTimeout(r, 1000)); // mantenha o ritmo do rastreamento
}

await browser.close();
console.log(articles.length, 'artigos');

O Que Você Recebe de Volta

Cada artigo é um registro simples — título mais corpo legível:

json Copy
{
  "url": "https://text.npr.org/nx-s1-5858590",
  "title": "EUA e Irã anunciam um acordo para acabar com a guerra, reabrir o Estreito de Ormuz",
  "paragraphs": 40,
  "text": "..."
}
// amostra ilustrativa — título + contagem de parágrafos são uma captura real; texto do corpo cortado.

Algumas observações honestas:

  • Aperte o filtro de descoberta por site. Um filtro solto puxa navegação e tags; combine com a forma da URL do artigo.
  • Valide a busca. Uma contagem de parágrafos quase zero geralmente significa um redirecionamento, um paywall ou uma parede de consentimento — verifique antes de confiar no registro.
  • Remova duplicatas nas varreduras. Páginas principais relistam a mesma história; foque na URL.
  • Mantenha o ritmo e fixe. Um atraso entre as buscas e um proxyCountry fixo mantêm uma busca de seção evitando limites de taxa.

Conclusão: descobrir, buscar, repetir

Um rastreador de notícias é dividido em duas etapas limpas — descubra os links dos artigos a partir de uma página principal, depois busque e extraia o título e o corpo de cada história. Mantê-los separados torna o rastreamento controlável, reutilizável e fácil de programar. Rodar no Scrapeless Scraping Browser renderiza as páginas principais construídas em JS e fornece a saída residencial que evita que uma varredura seja limitada por taxas. Para a parte de múltiplas páginas do rastreamento, veja o guia de paginação; a página do produto Scraping Browser e documentos cobrem toda a superfície do SDK. Filtre a descoberta rigidamente, valide cada busca, remova duplicatas nas varreduras e mantenha o ritmo do rastreamento.


Pronto para Criar Seu Pipeline de Dados Potencializado por IA?

Junte-se à nossa comunidade para reivindicar um plano gratuito e conectar-se com desenvolvedores que constroem pipelines de notícias e conteúdo: Discord · Telegram.

Inscreva-se em app.scrapeless.com para obter a execução gratuita do Scraping Browser e adapte os padrões acima aos veículos e seções que seu fluxo de trabalho precisa. Veja preços para escala.


FAQ

Q: Rastrear sites de notícias é legal?
Coletar conteúdo visível ao público é geralmente permitido, mas os direitos autorais e os Termos de Serviço de cada site regulam o que você pode armazenar e republicar. Rasteje páginas públicas, respeite as regras de exclusão de robôs e ToS, e consulte um advogado para o seu caso de uso.

P: Como separo links de artigos da navegação?
Filtre âncoras para a forma da URL do artigo do site — um caminho /news/articles/ ou um slug terminando em um id longo — em vez de pegar todos os links na página.

P: Como sei se o artigo foi realmente buscado?
Verifique a contagem de parágrafos e o comprimento do texto. Uma contagem próxima de zero sinaliza um redirecionamento, paywall ou parede de consentimento em vez de uma história.

P: Preciso de um proxy?
Para um rastreamento contínuo, sim — fixe proxyCountry na região que o veículo atende e ajuste o ritmo do rastreamento para não ultrapassar os limites de taxa.

P: Como faço para executar isso em um cronograma apenas para novas histórias?
Mantenha um conjunto seen de URLs persistente; execute novamente a descoberta no seu intervalo e busque apenas os links que você não registrou.

P: Posso executar isso sem um agente de IA?
Sim. É apenas o Puppeteer sobre a sessão Scrapeless — nenhum agente necessário.

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