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

Senior Web Scraping Engineer
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:
-
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. -
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.
-
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.
-
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.
-
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.
-
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
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
npm install axios
Depois de instalado, você pode importar o Axios no início do seu script com:
javascript
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
npm install axios
Ou se você preferir Yarn, você pode usar:
bash
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
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
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
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
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
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
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
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.