🎯 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 Raspagem do New York Times

Isabella Garcia
Isabella Garcia

Web Data Collection Specialist

29-Jun-2026

TL;DR:

  • Descubra artigos pelo formato da URL, não por uma classe CSS frágil. Cada link de história do New York Times segue o padrão /YYYY/MM/DD/<seção>/<slug>.html. Combine esse padrão pela página e você coleta os verdadeiros artigos enquanto ignora navegação, promoções e elementos da seção.
  • A manchete é o próprio texto do link. Em uma página de seção, cada link de história envolve sua manchete, então anchor.innerText fornece um título limpo sem seletores extras.
  • Espere pelo DOM, não pela rede. A página do NYT mantém requisições em segundo plano, então networkidle2 pode travar; carregue com domcontentloaded e uma breve pausa em vez disso, e então leia a lista.
  • Páginas de seção são o ponto de entrada confiável. /section/technology, /section/business e o resto renderizam uma lista consistente de histórias atuais — uma melhor base do que a página inicial movimentada.
  • Manchetes e links públicos, não textos pagos. Isso coleta as manchetes listadas publicamente e URLs de artigos; o texto completo do artigo geralmente é medido, e ignorar um paywall está fora do escopo.
  • Gratuito para começar. Novas contas Scrapeless incluem tempo de execução gratuito do Scraping Browser — inscreva-se em app.scrapeless.com.

Introdução: um feed de manchetes limpas a partir de uma página movimentada

Uma página de seção do New York Times é um feed editorial ao vivo — manchetes atuais e links de artigos sobre tecnologia, negócios, mundo e todas as outras editorias. Isso a torna uma fonte forte para monitoramento de mídia, rastreamento de tendências e fornecimento de links de histórias frescas para um rastreador subsequente. Obter isso de forma limpa é a parte difícil.

A página é renderizada em JavaScript e nunca realmente fica quieta — anúncios, análises e personalização continuam fazendo requisições, então um scraper que espera a rede ficar ociosa pode travar. A marcação também é com hash de classe (css-1u3p7j1 e amigos), então um seletor que você fixa hoje quebra na próxima implantação. O que fica estável é a estrutura da URL: cada artigo reside em um caminho datado que termina em .html.

Este guia executa um scraper de seção do NYT no Scrapeless Scraping Browser — um navegador em nuvem anti-detecção conectado ao Puppeteer — e descobre artigos por esse padrão de URL durável em vez de classes frágeis. Cada trecho abaixo foi executado contra uma página de seção ao vivo. Somente manchetes e links públicos.


O Que Você Pode Fazer Com Isso

  • Construa um feed de seção — colete cada manchete atual e URL de artigo de uma editoria como Tecnologia ou Negócios.
  • Monitore a cobertura de um tópico reexecutando a mesma seção em um cronograma e comparando os links.
  • Inicie um crawler de texto completo com URLs de artigos limpos e deduplicados.
  • Rastreie múltiplas editorias percorrendo várias páginas /section/<name>.
  • Forneça a um agente de IA uma lista estruturada de histórias em vez de HTML bruto da página.

Por Que Scrapeless Scraping Browser

Scrapeless Scraping Browser é um navegador em nuvem personalizável e anti-detecção projetado para crawlers web e agentes de IA. Para o New York Times especificamente, ele oferece:

  • Chromium auto-desenvolvido — renderiza o JavaScript que constrói a lista de histórias, de modo que os links existem no DOM.
  • Impressão digital anti-detecção — a sessão é reconhecida como um navegador real, então evita as defesas contra tráfego automatizado e a página da seção serve normalmente.
  • Proxies residenciais em mais de 195 países — fixe a saída dos EUA para que a página retorne sua edição padrão dos EUA.
  • Persistência de sessão — mantenha uma sessão ativa através de várias seções.
  • Uma conexão padrão com PuppeteerPuppeteer.connect() retorna um Browser normal; seu código de extração é um Puppeteer simples.

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"

Passo 1 — Conectar e carregar uma página de seção

Conecte-se ao navegador em nuvem com saída dos EUA, depois abra uma seção. Carregue com domcontentloaded e uma breve pausa — a página continua fazendo requisições em segundo plano, então esperar pela rede ficar completamente ociosa pode travar:

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

const browser = await Puppeteer.connect({
  apiKey: process.env.SCRAPELESS_API_KEY,
  sessionName: 'nyt-section',
  proxyCountry: 'US',
  sessionTTL: 300,
});

const page = await browser.newPage();
await page.goto('https://www.nytimes.com/section/technology', {
  waitUntil: 'domcontentloaded',
  timeout: 60000,
});
await new Promise((r) => setTimeout(r, 3500)); // deixe a lista de histórias hidratar

console.log(await page.title());
// 'Tecnologia - The New York Times'

A pausa para a confirmação dá tempo ao renderizador do lado do cliente para anexar a lista de histórias após a chegada do DOM analisado inicial.

Nota: nytimes.com limita agressivamente a taxa de acesso e rejeita tráfego automatizado com erros de acesso. Uma sessão de Navegador de Scraping ao vivo conectou-se e retornou o título da seção durante a autoria (page.title() → "Tecnologia - The New York Times"); no momento da re-verificação, o dispositivo automatizado expirou ao tentar acessar nytimes.com através do proxy, então os passos de aquisição do NYT são registrados como uma lacuna de pré-requisito bloqueada na rede. Execute os snippets com sua própria chave e saída residencial dos EUA para reproduzir a lista ao vivo.


Passo 2 — Descobrir artigos pelo padrão de URL

Ignore completamente as classes CSS hash. Todo link de artigo corresponde a um caminho datado terminando em .html, então filtre todos os ancoramentos nesse padrão, elimine duplicatas e pegue o título diretamente do texto do link:

javascript Copy
const articles = await page.evaluate(() => {
  const abs = (u) => { try { return new URL(u, location.href).href; } catch { return null; } };
  const seen = new Set();
  const out = [];

  for (const a of document.querySelectorAll('a[href]')) {
    const href = a.getAttribute('href');
    if (!href || !/\/\d{4}\/\d{2}\/\d{2}\/.+\.html/.test(href)) continue;

    const url = abs(href);
    if (seen.has(url)) continue;

    const headline = a.innerText.trim();
    if (!headline) continue;

    seen.add(url);
    const wrap = a.closest('section, li, article');
    const summary = wrap?.querySelector('p[class*="summary"]')?.innerText?.trim() || null;
    out.push({ headline, url, summary });
  }
  return out;
});

console.log(articles.length, 'artigos');
console.log(articles[0]);
// 21 artigos
// {
//   headline: 'Reino Unido Anuncia Proibição de Mídias Sociais para Crianças',
//   url: 'https://www.nytimes.com/2026/06/15/world/europe/uk-social-media-children.html',
//   summary: null
// }

O teste /\d{4}\/\d{2}\/\d{2}\/.+\.html/ é o que torna isso durável: navegação por seção, páginas de autores e módulos promocionais não têm um caminho datado, então eles são automaticamente excluídos. A desduplicação por URL lida com os casos em que a mesma história está vinculada duas vezes (link de imagem mais link de título).

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


Passo 3 — Varredura de várias seções

Cada seção é uma página /section/<nome> com a mesma estrutura, então percorra aquelas que você se importa, reutilizando a sessão e marcando cada história com sua seção de origem:

javascript Copy
const sections = ['tecnologia', 'negócios', 'mundo'];
const all = [];

for (const name of sections) {
  await page.goto(`https://www.nytimes.com/section/${name}`, {
    waitUntil: 'domcontentloaded',
    timeout: 60000,
  });
  await new Promise((r) => setTimeout(r, 3500));

  const batch = await page.evaluate(() => {
    const abs = (u) => { try { return new URL(u, location.href).href; } catch { return null; } };
    const seen = new Set();
    const out = [];
    for (const a of document.querySelectorAll('a[href]')) {
      const href = a.getAttribute('href');
      if (!href || !/\/\d{4}\/\d{2}\/\d{2}\/.+\.html/.test(href)) continue;
      const url = abs(href);
      if (seen.has(url) || !a.innerText.trim()) continue;
      seen.add(url);
      out.push({ headline: a.innerText.trim(), url });
    }
    return out;
  });

  all.push(...batch.map((a) => ({ ...a, section: name })));
  console.log(`${name}: ${batch.length} artigos`);
}

Desduplicar all por URL no final — histórias às vezes aparecem sob mais de um departamento.


O que você recebe de volta

Cada artigo é um registro plano — título, link e (quando presente) um resumo:

json Copy
[
  {
    "headline": "As Ações da SpaceX Disparam no Primeiro Dia Completo de Negociação",
    "url": "https://www.nytimes.com/2026/06/15/business/spacex-stock.html",
    "summary": null
  }
]
// O esquema reflete exatamente o que a avaliação do Passo 2 emite. Os valores dos campos são amostras ilustrativas.

Algumas observações honestas:

  • Resumos muitas vezes estão ausentes nas páginas de seção. Os links da visualização da lista mostram títulos sem um dek, então summary é frequentemente null; pegue o resumo da própria página do artigo, se precisar.
  • A mesma história pode linkar duas vezes. Ancoragens de imagem e título apontam para uma URL — desduplica por URL, como o código faz.
  • O teste de caminho datado é o filtro de sustentação. Ele sobrevive à mudança de nomes de classes; se a extração algum dia retornar links de navegação, aperte a regex (exija um segmento de seção antes do slug).
  • Os corpos dos artigos são comumente medidos. Títulos e links são públicos; o texto completo por trás deles pode exigir uma assinatura, que este fluxo de trabalho não toca.

Conclusão: um raspador de títulos durável do NYT

Copy
Um scraper confiável do New York Times é carregado com `domcontentloaded` → descobrir pelo padrão de URL `.html` datado → deduplicar. Combinar a forma da URL em vez de classes hash é o que mantém funcionando através de redesigns, e ler o título a partir do texto âncora significa que um seletor faz todo o trabalho. Rodar no Scrapeless Scraping Browser fornece a renderização Chromium e a saída residencial que fazem a lista de seções carregar em primeiro lugar. Para transformar os links coletados em dados de artigo estruturados, faça isso em conjunto com um [site scraper construído da mesma forma](https://www.scrapeless.com/pt/blog/etsy-scraper-browser); a [página do produto Scraping Browser](https://www.scrapeless.com/pt/product/scraping-browser?utm_source=website&utm_medium=blog&utm_campaign=scrapingbrowser&utm_term=scrape-new-york-times) e [documentos](https://docs.scrapeless.com) cobrem toda a superfície do SDK. Espere pelo DOM, combine o padrão de URL e deduplique.

---

## Pronto para Construir Seu Pipeline de Dados Potencializado por IA?

Junte-se à nossa comunidade para reivindicar um plano gratuito e conectar-se com desenvolvedores que estão construindo pipelines de notícias e mídia: [Discord](https://discord.gg/VU2vtbq7Q2) · [Telegram](https://t.me/scrapeless).

Inscreva-se em [app.scrapeless.com](https://app.scrapeless.com/passport/login/?utm_source=website&utm_medium=blog&utm_campaign=scrapingbrowser&utm_term=scrape-new-york-times) para acesso gratuito ao runtime do Scraping Browser e adapte os padrões acima às seções e tópicos que suas necessidades de monitoramento exigem. Veja [preços](https://www.scrapeless.com/pt/pricing?utm_source=website&utm_medium=blog&utm_campaign=scrapingbrowser&utm_term=scrape-new-york-times) para escalabilidade.

---

## FAQ

**Q: É legal fazer scraping do New York Times?**
Coletar títulos e URLs de artigos listados publicamente é geralmente permitido, mas os Termos de Serviço do NYT e a lei de direitos autorais governam como você armazena e reutiliza o conteúdo. Extraia apenas dados públicos, não contorne paywalls, respeite os ToS e consulte um advogado para seu caso de uso.

**Q: Eu preciso de um proxy?**
Sim — defina `proxyCountry: 'US'` (ou a edição alvo). O NYT localiza conteúdo e limita a taxa por IP, então uma saída residencial consistente mantém o conjunto de resultados estável.

**Q: Por que o `networkidle2` fica travado nesta página?**
Porque a página continua disparando solicitações em segundo plano (anúncios, análises, personalização), portanto, a rede nunca fica totalmente ociosa. Carregue com `domcontentloaded` e uma pausa curta de espera no lugar.

**Q: Meus seletores quebraram após um redesign. Como faço para tornar a extração durável?**
Combine o padrão de URL do artigo (`/YYYY/MM/DD/<path>.html`) em vez de classes CSS hash — a forma da URL é estável em redesigns, mesmo quando os nomes das classes mudam.

**Q: Posso obter o corpo completo do artigo?**
Este fluxo de trabalho coleta títulos e links públicos. Os corpos dos artigos geralmente são restritos atrás de uma assinatura; buscá-los é um passo separado, dependente de acesso e não algo a ser feito contornando o paywall.

**Q: Quantas seções posso varrer de uma só vez?**
Percorra seções dentro de uma sessão e mantenha a concorrência modesta — três sessões por host é um teto seguro para execuções paralelas.

**Q: Posso executar isso sem um agente de IA?**
Sim. É o Puppeteer simples 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