🥳Junte-se à Comunidade Scrapeless e Solicite sua avaliação gratuita para acessar nosso poderoso kit de ferramentas de Web Scraping!
Voltar ao blog

Introdução ao Axios no Node.js: Um Guia para Iniciantes

Alex Johnson
Alex Johnson

Senior Web Scraping Engineer

07-Nov-2024

Tudo o que sabemos é que lidar com solicitações HTTP de forma eficiente é crucial, e uma ferramenta que facilita isso é o Axios. Se você está recuperando dados de APIs, enviando dados para servidores ou simplesmente raspando conteúdo de sites, o Axios é uma ótima ferramenta para otimizar o processo.

Vamos mergulhar no que é o Axios, como ele funciona e explorar algumas maneiras práticas de usá-lo de forma eficaz no Node.js.

O que é Axios no Node.js?

Axios é um cliente HTTP baseado em promessas projetado para ambientes JavaScript do lado do cliente e do lado do servidor. Com o Axios, você pode fazer solicitações HTTP do navegador em aplicativos de front-end e do servidor em aplicativos Node.js. O Axios transforma automaticamente dados JSON e lida com muitas das complexidades do tratamento de solicitações e respostas, tornando mais fácil trabalhar com APIs e lidar com dados.

O Axios foi originalmente construído como um cliente HTTP baseado em navegador, mas se tornou incrivelmente popular no lado do servidor, especialmente com o Node.js. Com sua sintaxe simples e amplas opções de personalização, o Axios se tornou uma das bibliotecas preferidas dos desenvolvedores em todo o mundo.

Recursos principais do Axios:

  1. Baseado em Promessas: Como o Axios é construído com base em Promessas, ele permite um código mais limpo e gerenciável usando a sintaxe async/await. Essa abordagem facilita a escrita de código assíncrono sem o inferno de retorno de chamada, tornando seu código mais legível e manutenível.

  2. Transformação Automática de Dados: O Axios transforma automaticamente dados JSON, simplificando o processo de envio e recebimento de dados no formato JSON. Quando envia uma solicitação ou recebe uma resposta no formato JSON, ele analisa e serializa os dados automaticamente, permitindo que você trabalhe diretamente com objetos JavaScript.

  3. Compatibilidade do Lado do Cliente e do Servidor: O Axios funciona tanto do lado do cliente (no navegador) quanto do lado do servidor (no Node.js), tornando-o versátil para desenvolvimento de front-end e back-end. Quando usado no Node.js, o Axios simplifica a realização de solicitações HTTP para APIs, a realização de busca de dados de servidor para servidor e muito mais.

  4. Interceptadores Integrados: O Axios oferece suporte a interceptadores de solicitações e respostas, que são úteis para lidar com tarefas como registro, tratamento de erros, autenticação ou adição de cabeçalhos antes que as solicitações sejam enviadas ou as respostas sejam processadas.

  5. Configuração Personalizável: O Axios permite uma ampla personalização. Por exemplo, você pode definir valores padrão globais como cabeçalhos ou URLs base, facilitando a configuração para diferentes ambientes.

  6. Tratamento de Erros: O Axios fornece um mecanismo robusto de tratamento de erros que permite capturar erros com base no código de status retornado. Você pode lidar com erros de cliente e servidor de forma diferente, facilitando o gerenciamento do tratamento de respostas.

Casos de uso comuns do Axios no Node.js

  • Busca de Dados de APIs: O Axios é comumente usado no Node.js para buscar dados de APIs, tornando-o ideal para construir aplicativos RESTful, especialmente quando você precisa interagir com serviços de terceiros ou microsserviços.

  • Raspagem da Web: O Axios pode ser usado para buscar conteúdo HTML de sites quando a web é raspada, especialmente para sites estáticos. Combinado com ferramentas como Cheerio, ele permite analisar HTML para extrair dados relevantes.

  • Tratamento de Autenticação: O Axios é frequentemente usado no Node.js para interagir com serviços de autenticação, como enviar credenciais para uma API para autenticação e lidar com tokens.

  • Uploads/Downloads de Arquivos: Ele é capaz de lidar com dados binários também, para que você possa usá-lo para fazer upload ou download de arquivos de um servidor.

Está tendo problemas com desafios de web scraping e bloqueios constantes nos projetos em que está trabalhando?
Tente usar Scrapeless para tornar a extração de dados fácil e eficiente, tudo em uma ferramenta poderosa. Experimente gratuitamente hoje!

Exemplo de Uso no Node.js

Abaixo está um exemplo de uso do Axios no Node.js para fazer uma solicitação GET:

javascript Copy
const axios = require('axios');

async function fetchData() {
  try {
    const response = await axios.get('https://jsonplaceholder.typicode.com/posts');
    console.log(response.data);
  } catch (error) {
    console.error('Error fetching data:', error.message);
  }
}

fetchData();

Este código demonstra a simplicidade de fazer solicitações com o Axios no Node.js. O response.data contém os dados reais da API, enquanto error.message lida com qualquer erro que possa ocorrer, oferecendo uma abordagem simplificada para o tratamento de solicitações.

O Axios é do lado do servidor ou do lado do cliente?

O Axios é um cliente HTTP versátil que funciona em ambientes de servidor e cliente. Veja como ele se encaixa em cada um:

  • Lado do Servidor (Node.js): No Node.js, o Axios pode fazer solicitações HTTP do servidor de back-end. Esse recurso é comumente usado para comunicação de servidor para servidor, recuperação de dados de APIs de terceiros e raspagem de sites.
  • Lado do Cliente (Navegador): Em aplicativos de front-end, o Axios lida com solicitações HTTP, como recuperação e publicação de dados para/de APIs.

Ao usar o Axios, você obtém uma API unificada para lidar com solicitações HTTP de cliente e servidor, tornando o código mais reutilizável e reduzindo a necessidade de aprender diferentes métodos de solicitação para front-end e back-end.

O Axios é um módulo Node?

Sim, o Axios é um módulo Node. É uma biblioteca autônoma, o que significa que você pode instalá-la facilmente por meio do npm ou yarn em qualquer projeto Node.js. Ele não é integrado ao Node.js por padrão, mas pode ser integrado a qualquer projeto instalando-o como uma dependência.

Para instalar o Axios, você pode usar o seguinte comando no seu terminal:

bash Copy
npm install axios

Depois de instalado, você pode importar o Axios no início do seu script com:

javascript Copy
const axios = require('axios');

Este módulo é leve, rápido e projetado para lidar com solicitações HTTP sem adicionar muita complexidade ao seu projeto.

Como instalar o Axios no terminal?

Para instalar o Axios no seu ambiente Node.js, abra seu terminal e navegue até o diretório raiz do seu projeto. Execute o seguinte comando:

bash Copy
npm install axios

Ou se você preferir Yarn, você pode usar:

bash Copy
yarn add axios

Depois de instalado, você pode usá-lo imediatamente no seu projeto exigindo ou importando-o, como mostrado na seção anterior. Essa instalação adicionará o Axios como uma dependência ao seu projeto, permitindo que você use seus métodos para lidar com solicitações HTTP de forma eficiente.

Como usar o Axios na web scraping

Para usar Axios de forma eficaz na raspagem da web, siga estas etapas para um guia completo, desde a configuração do Axios até o tratamento de desafios e a análise dos dados. Aqui está uma análise de como usar o Axios na raspagem da web:

1. Configurando o Axios para Raspagem da Web

Primeiro, certifique-se de ter Node.js e Axios instalados no seu projeto. Você pode instalar o Axios executando:

bash Copy
npm install axios

Com o Axios instalado, ele está pronto para ser usado para fazer solicitações HTTP para sites.

2. Uso básico para buscar conteúdo de página da web

Quando a web é raspada, o objetivo principal é buscar o conteúdo HTML de uma página da web. Aqui está como você pode fazer uma solicitação GET simples para um site usando o Axios:

javascript Copy
const axios = require('axios');

async function fetchHTML(url) {
  try {
    const response = await axios.get(url);
    return response.data; // Conteúdo HTML da página
  } catch (error) {
    console.error(`Error fetching HTML: ${error.message}`);
  }
}

fetchHTML('https://example.com').then(html => console.log(html));

Neste código, fetchHTML envia uma solicitação GET para a URL fornecida e retorna o conteúdo HTML. Esta é a base para raspar dados de sites estáticos.

3. Analisando conteúdo HTML

Para extrair informações específicas do HTML, use uma biblioteca de análise como Cheerio. O Cheerio permite que você consulte o HTML usando uma sintaxe semelhante ao jQuery, facilitando a direcionamento de elementos. Instale-o executando:

bash Copy
npm install cheerio

Aqui está como você pode usar o Cheerio ao lado do Axios para raspar dados de uma página da web:

javascript Copy
const axios = require('axios');
const cheerio = require('cheerio');

async function scrapeWebsite(url) {
  try {
    const { data } = await axios.get(url);
    const $ = cheerio.load(data);

    // Exemplo: Extrair todos os títulos de artigos
    const titles = [];
    $('h2.article-title').each((i, element) => {
      titles.push($(element).text());
    });

    console.log('Scraped Titles:', titles);
  } catch (error) {
    console.error(`Error scraping website: ${error.message}`);
  }
}

scrapeWebsite('https://example.com/articles');

Neste exemplo, o Axios recupera o HTML e o Cheerio o analisa para extrair títulos de artigos (h2.article-title neste caso). Você pode ajustar os seletores para direcionar diferentes elementos na página.

4. Lidando com cabeçalhos e agentes de usuário

Alguns sites bloqueiam solicitações de clientes não relacionados a navegadores. Para imitar um navegador real, inclua cabeçalhos como User-Agent na sua solicitação Axios. Aqui está como configurar cabeçalhos:

javascript Copy
const axios = require('axios');

async function fetchWithHeaders(url) {
  try {
    const response = await axios.get(url, {
      headers: {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36'
      }
    });
    return response.data;
  } catch (error) {
    console.error(`Error with headers: ${error.message}`);
  }
}

fetchWithHeaders('https://example.com').then(html => console.log(html));

Adicionar cabeçalhos pode ajudar a evitar que o site bloqueie sua solicitação. O cabeçalho User-Agent faz com que sua solicitação pareça ser de um navegador real.

5. Lidando com páginas renderizadas por JavaScript

O Axios é ideal para sites estáticos, mas não pode executar JavaScript. Se você estiver raspando sites com muito JavaScript, use Puppeteer ou Playwright para renderizar a página totalmente. Para soluções apenas com Axios, concentre-se em conteúdo estático ou procure fontes de dados alternativas como APIs.

6. Tratamento de erros e limitação de taxa

O tratamento de erros é essencial na raspagem da web para gerenciar problemas como limites de taxa ou solicitações bloqueadas. Aqui está um exemplo com um mecanismo básico de retentativa:

javascript Copy
const axios = require('axios');

async function fetchWithRetries(url, retries = 3) {
  for (let i = 0; i < retries; i++) {
    try {
      const response = await axios.get(url);
      return response.data;
    } catch (error) {
      console.error(`Attempt ${i + 1} failed: ${error.message}`);
      if (i === retries - 1) throw error;
    }
  }
}

fetchWithRetries('https://example.com').then(html => console.log(html));

7. Armazenando ou processando os dados

Depois de ter os dados, salve-os em um arquivo ou banco de dados para análise posterior. Por exemplo, você pode usar fs para salvar dados em um arquivo JSON:

javascript Copy
const fs = require('fs');
const axios = require('axios');
const cheerio = require('cheerio');

async function scrapeAndSave(url) {
  try {
    const { data } = await axios.get(url);
    const $ = cheerio.load(data);
    const results = [];

    // Raspar dados específicos
    $('h2.article-title').each((i, element) => {
      results.push($(element).text());
    });

    fs.writeFileSync('data.json', JSON.stringify(results, null, 2));
    console.log('Data saved to data.json');
  } catch (error) {
    console.error(`Error saving data: ${error.message}`);
  }
}

scrapeAndSave('https://example.com/articles');

Neste exemplo, os dados raspados são salvos em data.json, que você pode carregar posteriormente para análise.

8. Lidando com desafios comuns

  • Detecção de bots: Adicionar cabeçalhos e lidar com cookies pode fazer com que as solicitações pareçam mais legítimas.
  • Limitação de taxa: Use atrasos entre as solicitações ou implemente um mecanismo de retentativa para evitar sobrecarregar o servidor.
  • Endereços IP bloqueados: Roteie endereços IP ou use serviços de proxy para evitar ser bloqueado ao raspar sites com medidas agressivas contra raspagem.

Conclusão

Neste guia, abordamos o essencial do uso do Axios no Node.js para raspagem da web. Você aprendeu sobre o papel do Axios como um módulo Node.js, como instalá-lo e configurá-lo, e explorou técnicas práticas como adicionar cabeçalhos, usar o Cheerio para analisar HTML e lidar com desafios comuns de raspagem da web, como detecção de bots e gerenciamento de erros.

Para desenvolvedores que trabalham com integrações de API, raspagem da web ou coleta de dados, o Axios oferece uma abordagem poderosa, flexível e eficiente para fazer solicitações HTTP e lidar com respostas. Embora seja ideal para conteúdo estático, combinar o Axios com ferramentas como Puppeteer ou Playwright pode ajudar a superar as limitações com conteúdo dinâmico.

Com essas estratégias, você está equipado para usar o Axios de forma eficaz, tornando-o uma adição versátil ao conjunto de ferramentas de qualquer desenvolvedor. Experimente diferentes configurações para otimizar suas chamadas de API e projetos de raspagem da web para confiabilidade e eficiência.

Na Scrapeless, acessamos apenas dados disponíveis publicamente, cumprindo rigorosamente 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 quaisquer atividades ilegais ou infratoras. Não oferecemos garantias e nos isentamos de qualquer responsabilidade pelo uso de informações deste blog ou de links de terceiros. Antes de se envolver em qualquer atividade de scraping, 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