Web scraping em JavaScript : Guia completo

Autor :

Reagir :

Comentário

Para fazer recolha de dados da Web em JavaScript, precisas de Node.js e uma biblioteca adequada ao teu público-alvo. Utiliza Cheerio para as páginas estáticas e Puppeteer Onde Playwright assim que o conteúdo for apresentado no lado do cliente.

Este guia mostra-te, passo a passo, como instalar, programar e executar o teu primeiro scraper.

Pré-requisitos para a recolha de dados da Web em JavaScript

Ambiente Node.js e bibliotecas para fazer web scraping em JavaScript.
Ambiente Node.js e bibliotecas para fazer web scraping em JavaScript ©Christina para Alucare.fr

Antes de escreveres o teu primeiro script JS, bastam duas ferramentas básicas para começares.

  • Node.js : um ambiente de execução de JavaScript código aberto e multiplataforma. Permite-te executar código JS fora de um navegador, diretamente a partir da tua consola. Descarrega-o na documentação oficial do Node.js.
  • npm (Node Package Manager) : o gestor de pacotes integrado no Node. Serve para instalar as tuas bibliotecas com um simples comando npm install.

Uma vez Node.js Depois de instalar, escolhe uma biblioteca de acordo com o tipo de página web que pretendes extrair. Aqui estão as mais utilizadas.

  • Cheerio : perfeita para o extracção de páginas estáticas. Analisa o HTML bruto com uma sintaxe semelhante à de jQuery. Ela é leve, rápida e simples, mas não executa o JavaScript da página. Consulte a documentação do Cheerio.
  • Puppeteer e Playwright : ideais para os sites dinâmicos. Controlam um verdadeiro navegador «headless» (Chrome Onde Firefox) e carregam a página tal como um utilizador real. Consulte a documentação do Puppeteer.

A regra é simples: Cheerio no caso das páginas estáticas, Puppeteer Onde Playwright assim que um site carregar os seus dados em JavaScript.

Como é que posso fazer web scraping em JavaScript?

O princípio é simples: pedes o HTML Numa página web, identifica os elementos que te interessam e, em seguida, extrai os dados. A escolha da ferramenta baseia-se num único critério: a página é estático Onde dinâmico ?

Passo 1: Instalação e configuração

Começa por fazer o download Node.js a partir do site oficial e, em seguida, instala-o. Verifica depois a instalação no teu terminal:

node -v
npm -v

Se ambas as versões forem apresentadas, está tudo bem. Cria agora o teu projeto:

mkdir my-scraping
cd my-scraping
npm init -y

Este comando gera um ficheiro package.json que irá listar as tuas dependências. Basta instalar as bibliotecas adequadas às tuas necessidades.

Para um página estática (conteúdo já presente no código HTML devolvido pelo servidor), utiliza axios e Cheerio :

npm install axios cheerio

Para um página dinâmica (dados carregados através de JavaScript do lado do cliente, como React, Vue Onde Angular), instale antes Puppeteer :

npm install puppeteer

Passo 2: Criar um script de raspagem

Antes de programares o teu script JS, identifica os elementos certos Seletores CSS. Abre a página web de destino em Chrome Onde Firefox, clica com o botão direito do rato no elemento pretendido e, em seguida, seleciona «Inspecionar». O DOM é apresentado: assim, podes identificar a baliza, a classe (.classe) ou o identificador (#id) a visar.

Extracção de dados de uma página estática com Cheerio

Cheerio lê apenas o HTML simples e não executa nenhum script JS. Num site renderizado do lado do cliente, só verá uma página em branco.

// Importar bibliotecas
const axios = require('axios');
const cheerio = require('cheerio');

// URL da página a ser raspada
const url = "https://exemple.com";

// Função principal
função assíncrona scrapePage() {
  try {
    // Descarregar o conteúdo HTML
    const { data } = await axios.get(url);

    // Carregar HTML com Cheerio
    const $ = cheerio.load(data);

    // Exemplo: recuperar todos os títulos h1
    const titles = [];
    $("h1").each((i, elem) => {
      titles.push($(elem).text().trim());
    });

    // Exibir os resultados
    consola.log("Títulos encontrados:", títulos);

  } catch (error) {
    consola.error("Erro durante a recolha de dados:", erro);
  }
}

// Executar o script
scrapePage();

Substitui https://exemple.com através do URL da tua escolha e, em seguida, adapta o seletor $("h1") para te orientares em relação ao que te interessa: $("p") no que diz respeito aos parágrafos, .classe Onde #id para um elemento específico. O método .text() devolve o textContent do elemento, o equivalente a jQuery do lado do servidor.

Extracção de dados de uma página dinâmica com Puppeteer

Puppeteer é um piloto a sério navegador sem cabeça e aguarda até que o JavaScript termine de carregar o conteúdo, onde Cheerio falha.

// Importar o Puppeteer
const puppeteer = require("puppeteer");

// URL da página a ser raspada
const url = "https://exemple.com";

função assíncrona scrapePage() {
  // Lançar um navegador sem uma interface gráfica (sem cabeça)
  const browser = await puppeteer.launch({ headless: true });
  const page = await browser.newPage();

  try {
    // Ir para a página
    await page.goto(url, { waitUntil: "networkidle2" });

    // Exemplo: extrair texto de todos os títulos h1
    const titles = await page.$$eval("h1", elements =>
      elements.map(el => el.textContent.trim())
    );

    consola.log("Títulos encontrados:", títulos);

  } catch (error) {
    consola.error("Erro durante a recolha de dados:", erro);
  } finally {
    // Fecha o navegador
    await browser.close();
  }
}

// Executar o script
scrapePage();

A opção waitUntil: "networkidle2" aguarda o fim dos solicitações de rede antes de extrair os dados da página web.

Fase 3: Gestão dos dados extraídos

Depois de recuperar os dados, podes guardá-los em JSON para uma base de dados, ou em CSV para os abrir no Excel. O módulo fs é natural de Node.js e não requer qualquer instalação. Para o CSV, basta adicionar a biblioteca json2csv :

npm install json2csv
const axios = require("axios");
const cheerio = require("cheerio");
const fs = require("fs");
const { Parser } = require("json2csv");

const url = "https://exemple.com";

async function scrapeAndSave() {
  try {
    // Récupérer le HTML de la page
    const { data } = await axios.get(url);
    const $ = cheerio.load(data);

    // Extraire les titres dans un tableau d'objets
    const resultats = [];
    $("h1").each((i, elem) => {
      resultats.push({ titre: $(elem).text().trim() });
    });

    // Sauvegarde en JSON
    fs.writeFileSync("resultats.json", JSON.stringify(resultats, null, 2), "utf-8");
    console.log("Données sauvegardées dans resultats.json");

    // Sauvegarde en CSV
    const parser = new Parser();
    const csv = parser.parse(resultats);
    fs.writeFileSync("resultats.csv", csv, "utf-8");
    console.log("Données sauvegardées dans resultats.csv");

  } catch (error) {
    console.error("Erreur lors du scraping :", error);
  }
}

scrapeAndSave();

Este script JS faz tudo de uma só vez: recupera a página web, extrai os dados HTML e, em seguida, escreve dois ficheiros. O bloco try / catch trata os erros para evitar que um tempo esgotado ou um CAPTCHA não faça com que todo o script de scraping pare de funcionar.

Melhores práticas para a recolha de dados da Web em JavaScript

Antes de executares os teus scripts, alguns hábitos simples ajudam a manter o teu scraping em JS eficaz, estável e que cumpra as condições de utilização dos sites em questão. É igualmente importante certificares-te de que a tua esta medida é legal dependendo do contexto.

  • Respeitar o ficheiro robots.txt : esta é a regra de ouro. Antes de extrair dados de uma página da Web, abre https://exemple.com/robots.txt. Se o caminho em questão estiver em Proibir, não o extraias. Assim, evitas problemas éticos e jurídicos.
  • Espacia as tuas consultas : não sobrecarregues o site. Deixa passar algum tempo entre cada acesso para manteres a discrição e evitares ser bloqueado.
  • Personalizar o teu User-Agent : por predefinição, um scraper JS é rapidamente detetado. Com Puppeteer, defina um cabeçalho realista através de page.setUserAgent() para imitar um navegador verdadeiro.
  • Lidar com erros e bloqueios : coloca as tuas chamadas num bloco try / catch para evitar que um timeout ou um CAPTCHA faça com que todo o script falhe.

Que alternativas devem ser consideradas?

O web scraping não se limita ao JavaScript. Dependendo do teu projeto, outras linguagens ou ferramentas podem responder melhor às tuas necessidades.

  • Python : as bibliotecas Scrapy e BeautifulSoup são fantásticos para extrair conteúdo de inúmeras páginas da Internet.
  • PHP : útil se quiseres integrar o scraping diretamente num site já programado nesta linguagem.
  • Ferramentas sem código como o Bright Data, o Octoparse e o Apify: permitem-te extrair dados da Web sem escrever uma única linha de código.

API de scraping ou solução «faça você mesmo»: o que escolher?

A verdadeira questão não é a linguagem, mas sim o nível de complexidade que estás disposto a gerir por ti próprio. O teu próprio script de scraping com Puppeteer Onde Cheerio continua a ser a melhor opção quando o volume é reduzido e o local está pouco protegido.

A API de recolha de dados (como a proposta pela Bright Data) torna-se mais relevante assim que te deparas com bloqueios avançados: rotação de endereços IP, resolução automática de CAPTCHA, execução de JavaScript em grande escala.

Em resumo: o Faça você mesmo permite-te poupar dinheiro e ensina-te muito. O’API permite-te poupar tempo em projetos complexos ou recorrentes.

Perguntas frequentes

Qual é a melhor ferramenta de JavaScript para raspagem da Web?

Tudo depende do tipo de página web que queiras extrair.

  • Cheerio : rápido e leve, perfeito para analisar o HTML páginas estáticas.
  • Puppeteer : ideal para controlar um navegador a sério Chrome e gerir o conteúdo gerado em JavaScript.
  • Playwright : próximo de Puppeteer, mas com o compatibilidade com vários navegadores (Chrome, Firefox, WebKit) e outras funcionalidades avançadas.

Qual é a melhor linguagem de programação para scraping?

Não existe uma linguagem universal que seja a melhor. A escolha depende do teu projeto e do teu ambiente.

  • Python : muito popular para projetos rápidos e grandes volumes de dados da Web.
  • JavaScript : o reflexo certo se já trabalhas no ecossistema da Web com Node.js.
  • PHP : útil para integrar a extração de dados diretamente num site já existente.

a recolha de dados da Web em JavaScript continua a ser uma excelente escolha para recolher dados da web, que passes por Cheerio, Puppeteer Onde Playwright.

Para aprofundares os teus conhecimentos sem precisares de escrever código, dá uma vista de olhos nos nossos guias sobre Dados brilhantes, Octoparse e Apify.

👍A sua opinião
O artigo é informativo
O artigo é objetivo
O artigo responde à minha pergunta
O conteúdo está atualizado
Encontrou algum erro? Diz-nos onde!

Gostou? Partilhe-o!

Este conteúdo é originalmente em francês (Ver o editor logo abaixo). Foi traduzido e revisto em várias línguas utilizando o Deepl e/ou a API do Google Translate para oferecer ajuda no maior número possível de países. Esta tradução custa-nos vários milhares de euros por mês. Se não estiver 100 % perfeita, deixe-nos um comentário para que a possamos corrigir. Se estiver interessado em rever e melhorar a qualidade dos artigos traduzidos, envie-nos um e-mail utilizando o formulário de contacto!
Agradecemos os seus comentários para melhorar o nosso conteúdo. Se quiser sugerir melhorias, utilize o nosso formulário de contacto ou deixe um comentário abaixo. Os seus comentários ajudam-nos sempre a melhorar a qualidade do nosso sítio Web Alucare.fr


Alucare é um meio de comunicação social independente. Apoie-nos adicionando-nos aos seus favoritos do Google News:

Publicar um comentário no fórum de discussão