Voltar ao blogue
Guias
Suciu Dan20 de outubro de 202211 min de leitura

As 5 melhores alternativas ao Node-Fetch para efetuar pedidos HTTP

As 5 melhores alternativas ao Node-Fetch para efetuar pedidos HTTP

Node-fetch

O Node-Fetch é um pequeno módulo que adiciona a API Fetch ao Node.js.

Trecho de código que mostra o comando npm para instalar o node-fetch versão 2

fonte da imagem

Com o fetch (no navegador ou através do Node Fetch), pode combinar a sintaxe await e .then para tornar a conversão do fluxo de leitura em JSON um pouco mais fácil — assim, os dados,

Como se pode ver no exemplo abaixo, este contém o JSON sem a necessidade de uma variável intermediária desnecessária.

Trecho de código que mostra um polyfill do node-fetch que atribui o fetch e as APIs relacionadas a `globalThis`

Fonte da imagem

Além disso, o Node Fetch suporta funcionalidades úteis, tais como a restrição do tamanho das respostas, o limite de redirecionamentos e falhas explícitas para depuração.

Pode utilizar várias bibliotecas, incluindo a node-fetch no Node.js, para enviar ou recuperar dados. No lado do cliente, a API Fetch do JavaScript pode ser utilizada para o mesmo fim

Pode carregar o módulo node-fetch antes de aceder à página inicial do Google. O endereço do servidor para o qual está a enviar um pedido HTTP é o único argumento que deve fornecer ao método fetch(). 

Pode encadear várias rotinas .then() para o ajudar a controlar a resposta e os dados da nossa solicitação, uma vez que o node-fetch funciona com base em promessas.

O campo URL contém simplesmente o URL efetivo do recurso que pretendemos obter. Se não for um URL absoluto, a função irá falhar. 

Quando quiser utilizar o get() para algo que não seja um pedido GET padrão, utilizamos o parâmetro opcional options, mas abordaremos isso com mais pormenor mais tarde.

O método devolve um objeto Response, que fornece funções úteis e informações sobre a resposta HTTP, tais como:

  • Texto () - devolve o corpo da resposta como uma cadeia de caracteres.
  • JSON() - converte o corpo da resposta num objeto JSON e devolve um erro se não for possível processá-lo.
  • Status e statusText - estes campos contêm informações sobre o código de estado HTTP.
  • Ok - é verdadeiro se o estado for um código de estado 2xx (uma condição de sucesso).
  • Headers - um objeto que contém cabeçalhos de resposta; a função get() pode ser utilizada para obter um único cabeçalho.

Popularidade

  • 8 milhões de downloads semanais no npm
  • Mais de 6,8 mil módulos que dependem do node-rest
  • +383 Forks
  • 3,8 mil estrelas no GitHub
  • 38 colaboradores

Características do node-fetch

  • Manter a coerência com a API .fetch da janela.
  • Ao seguir as especificações do stream e do fetch do WHATWG, tenha em conta as vantagens e desvantagens e descreva as variações conhecidas.
  • Utilização de funções assíncronas e promessas nativas 
  • Tanto na solicitação como na resposta, utilize fluxos nativos do Node para o corpo.
  • Descodificar corretamente a codificação do conteúdo (gzip/brotli/deflate) e converter automaticamente a saída de cadeias de caracteres (incluindo res.json() e res.text()) para UTF-8.
  • Para fins de depuração, algumas funcionalidades úteis incluem a restrição do tamanho das respostas, o limite de redirecionamentos e os erros explícitos.

Prós

  • Com um tamanho de instalação de cerca de 150 KB, o Node-fetch é talvez o módulo de pedidos HTTP mais leve. 
  • Oferece funcionalidades impressionantes, tais como o modo JSON, a API Promise, compatibilidade com navegadores, cancelamento de pedidos e a capacidade de substituir a sua biblioteca Promise ou descodificar formatações web atuais, como deflate/grip. 
  • Segue os padrões mais recentes de pedidos HTTP em JavaScript e continua a ser o módulo mais descarregado depois do `request`, com cerca de 8 milhões de descargas por semana (ultrapassando o Got, o Axios e o Superagent).

Por que precisa de uma alternativa ao Node-fetch

  • Não suporta HTTP/2 nem cookies
  • O Node-fetch não permite o armazenamento em cache em conformidade com a RFC
  • O Node-fetch não repete a tentativa em caso de falha. 
  • Não suporta eventos de progresso, erros de metadados, tempos de espera avançados nem ganchos.

As minhas principais alternativas ao node-fetch

Aqui está uma lista das minhas 5 principais alternativas ao node-fetch que pode utilizar nas suas soluções

  • Axios
  • Tenho
  • Superagente
  • Pedido
  • WebscrapingAPI

Vou explicar cada um deles para que compreenda melhor o que são e o que oferecem.

Vamos começar!

1. Axios

O Axios é um cliente HTTP baseado em promessas para o Node.js e o navegador. Tal como o SuperAgent, analisa automaticamente as respostas JSON. A sua capacidade de realizar consultas simultâneas utilizando o Axios distingue-o ainda mais. 

Para instalar o Axios

Trecho de código que mostra o comando npm para instalar o axios

fonte da imagem

Pode efetuar o pedido indicando a configuração relevante.

Trecho de código que mostra um exemplo de pedido POST com o Axios, incluindo o método, a URL e os dados JSON

Fonte da imagem

Devido à sua simplicidade, alguns programadores preferem o Axios às APIs integradas. No entanto, muitas pessoas sobrestimam a necessidade de uma biblioteca deste tipo. O node-fetch é perfeitamente capaz de reproduzir as funcionalidades essenciais do Axios.

Popularidade

  • Mais de 4,4 milhões de downloads no npm
  • Mais de 15 600 módulos dependem disso
  • Mais de 57 mil estrelas no GitHub
  • 71 colaboradores
  • +4,4 mil partilhas

Caraterísticas

  • Efetuar pedidos XMLHttpRequest no navegador
  • Suporta a API Promise
  • Fazer pedidos HTTP no Node.js
  • Interceptar resposta e pedido
  • Cancelar pedidos
  • Transformar os dados da resposta e do pedido
  • Transformações automáticas de dados JSON
  • Serialização automática de objetos de dados
  • Suporte do lado do cliente

Prós

  • O Axios permite-lhe configurar e personalizar totalmente os seus pedidos, bastando para isso fornecer-lhe um único objeto de configuração. Pode monitorizar o estado dos pedidos POST e executar modificações automatizadas de dados JSON.
  • O Axios é também o módulo de pedidos HTTP front-end mais utilizado. É bastante popular e segue os padrões mais recentes de JavaScript. Lida com o cancelamento de pedidos, redirecionamentos, gzip/deflate, problemas de metadados e hooks.

Contras

  • O Axios não suporta HTTP2, a API Stream nem o Electron. Além disso, não repete tentativas em caso de falhas e funciona no Node.js com suporte integrado a promessas. Para versões mais antigas, é necessário utilizar o Q promise ou o Bluebird. 2. Got

O Got é mais uma estrutura de pedidos HTTP intuitiva e robusta para o Node.js. Foi inicialmente concebido como uma alternativa leve ao popular pacote Request. Consulte esta tabela detalhada para saber como o Got se compara a outras bibliotecas.

Para instalar o got

Trecho de código que mostra o comando npm para instalar o cliente HTTP got

Fonte da imagem

O Got dispõe de uma opção para o tratamento de cargas JSON. 

Trecho de código que mostra um exemplo de pedido POST que devolve uma resposta JSON

Fonte da imagem

Unlike SuperAgent and Axios, Got does not automatically parse JSON. To enable this capability, { JSON: true } is added as an argument in a code.

De acordo com a documentação, foi gerado um erro porque o pedido é demasiado grande (tem vários gigabytes!). 4,46 MB contra 302 KB recebidos).

Popularidade

  • Mais de 6,2 milhões de downloads no npm
  • Mais de 2.500 módulos, dependendo do Got
  • +280 partilhas
  • Mais de 5 mil estrelas no GitHub
  • 71 colaboradores

Caraterísticas

  • Suporta HTTP/2
  • Suporta PromiseAPI e StreamAPI
  • Novas tentativas em caso de falha
  • Segue os redirecionamentos

Prós

  • Em comparação com as outras alternativas, o Got oferece mais funcionalidades e está a ganhar popularidade, uma vez que é fácil de utilizar, tem um tamanho de instalação reduzido e está em dia com todas as novas tendências do JavaScript.

Contras

  • O Got não é compatível com navegadores 3. SuperAgent

O SuperAgent é uma pequena biblioteca de pedidos HTTP que pode ser utilizada no Node.js e em navegadores para efetuar consultas AJAX. 

O SuperAgent dispõe de milhares de plugins para realizar tarefas como impedir o armazenamento em cache, transformar os dados de servidor e adicionar sufixos ou prefixos a URLs. 

Para instalar o SuperAgent

Trecho de código que mostra o comando npm para instalar o superagent

fonte da imagem

Utilização no Node

Trecho de código que mostra um exemplo de pedido POST do Superagent com cabeçalhos e um corpo JSON

fonte da imagem

Também pode ampliar as funcionalidades criando o seu próprio plugin. O SuperAgent também pode analisar dados JSON por si.

Popularidade

  • 2,5 milhões de downloads
  • Mais de 6,4 mil módulos dependem do SuperAgent
  • +1,2 mil partilhas
  • Mais de 14 mil estrelas no GitHub
  • 182 colaboradores

Prós

  • O Superagent é conhecido por oferecer uma interface intuitiva para a realização de pedidos HTTP, uma arquitetura de plugins e vários plugins para muitas funcionalidades populares atualmente disponíveis (por exemplo, o plugin «prefix» para adicionar um prefixo a todas as URLs).
  • O Superagent também oferece uma API de fluxos e promessas, cancelamento de pedidos, novas tentativas em caso de falha de um pedido, suporta gzip/deflate e gere eventos de progresso.

Contras

  • A compilação do Superagent está atualmente a falhar. Além disso, não oferece acompanhamento do progresso do upload, ao contrário do XMLHttpRequest
  • Não suporta temporizadores, erros de metadados nem ganchos. 4. Pedido

O Request é um dos clientes de pedidos HTTP mais populares para Node.js e foi um dos primeiros módulos a ser publicado no repositório npm.

Trecho de código que mostra uma função de retorno de chamada de uma solicitação Node.js a apresentar o erro, o código de estado e o corpo da resposta

fonte da imagem

Tem mais de 14 milhões de downloads por semana e foi concebido para ser a forma mais simples de efetuar pedidos HTTP no Node.js. 

Um ficheiro também pode ser transmitido numa solicitação POST ou PUT. Este método irá comparar a extensão do ficheiro com os tipos de conteúdo associados às extensões de ficheiro. 

Também pode personalizar cabeçalhos HTTP, como o User-Agent, no objeto de opções.

Características

  • Mais de 9 milhões de downloads na npm
  • Mais de 6,4 mil módulos, dependendo da solicitação
  • +3,2 mil partilhas
  • Mais de 25,2 mil estrelas no GitHub
  • 126 colaboradores

Caraterísticas

  • Suporta HTTPS
  • por predefinição, segue os redirecionamentos.

Prós

  • É fácil começar a usar o Request e é fácil de utilizar.
  • É um módulo popular e amplamente utilizado para efetuar chamadas HTTP

Contras

Está totalmente obsoleto desde 2020. Não se prevêem novas alterações

5. WebScrapingAPI

Devo dizer que a WebScrapingAPI me proporcionou soluções práticas para os desafios que enfrentei ao extrair dados da Internet. A WebScrapingAPI poupou-me tempo e dinheiro, ajudando-me a concentrar-me no desenvolvimento do meu produto.

A WebscrapingAPI é uma API escalável e de nível empresarial, fácil de utilizar, que ajuda a recolher e gerir dados HTML. Não nos esqueçamos de que tem toda a sua solução de web scraping reunida numa única API, o que significa um código simples e organizado.

Fonte da imagem

Definir a chave da API e os argumentos da URL, bem como a sua chave de acesso, para o site que pretende extrair é a solicitação básica mais simples que pode fazer à API.

Compreender as funcionalidades que a WebScrapingAPI oferece é fundamental para nos ajudar na nossa jornada de web scraping. Esta informação pode ser consultada na extensa documentação, que inclui exemplos de código em várias linguagens de programação.

Muitas vezes deparei-me com medidas de proteção que detetavam e bloqueavam o meu bot, impedindo-o de fazer o que eu queria. Isso acontece porque não é possível extrair dados de todos os sites. Alguns utilizam medidas de proteção como a identificação do navegador e os CAPCHAs, o que é uma chatice.

Lidar com tecnologias de deteção de bots pode ser um desafio, mas a WebScrapingAPI oferece soluções que vão desde CAPTCHAs até ao bloqueio de IP e tentativas automáticas, gerindo tudo isso. Basta concentrar-se nos seus objetivos. Eles tratam de tudo o resto.

Banner da página inicial da WebScrapingAPI que promove APIs REST para a extração de dados da Web

fonte

Possui uma excelente capacidade técnica, com mais de 100 milhões de proxies, garantindo que não seja bloqueado. Isto porque alguns sites só podem ser rastreados em determinados locais do mundo. Para tal, é necessário um proxy para aceder aos seus dados.

Como a gestão de um conjunto de proxies é complicada, a WebScrapingAPI trata de tudo por si. Dispõe de milhões de proxies rotativos para garantir que não seja detetado. Além disso, permite-lhe aceder a conteúdos com restrições geográficas utilizando um endereço IP específico.

Esta API oferece renderização em JavaScript. Pode ativar a renderização em JavaScript utilizando navegadores reais. Após ativá-la, poderá ver tudo o que é apresentado aos utilizadores. Isso inclui aplicações de página única que utilizam AngularJS, React ou outras bibliotecas.

Secção da página inicial da WebScrapingAPI que apresenta casos de utilização do produto e um mapa-mundo com marcadores de países

fonte da imagem

O que os utilizadores vêem é exatamente o que recebem. Que melhor vantagem competitiva poderia haver?

Além disso, a infraestrutura da API está implementada na Amazon Web Services, oferecendo-lhe acesso a um vasto conjunto de dados globais, seguro e fiável.

Na minha opinião sincera, usar a WebScrapingAPI é uma excelente escolha.

Prós

  • Construído em AWS
  • Preços acessíveis
  • Arquitetura obsessiva da velocidade
  • TODOS os pacotes têm renderização de Javascript
  • Serviços de alta qualidade, disponibilidade e estabilidade absoluta
  • Mais de 100 milhões de proxies rotativos para reduzir o bloqueio
  • Caraterísticas personalizáveis

Contras

Nenhum até agora.

Preços

  • O plano inicial para utilizar esta API custa 49 dólares por mês. 
  • Opções de avaliação gratuita

A WebScrapingAPI é uma boa opção se achar que não tem tempo para criar o scraper da Web do zero. Não hesite em dar uma vista de olhos

Por que a WebScrapingAPI é a minha principal recomendação:

Recomendo a WebScrapingAPI porque oferece soluções simples para a extração de dados da Web, acessíveis a todos através de uma única API. Além disso, possui uma das melhores interfaces de utilizador, o que facilita a extração de dados.

A API é suficientemente potente para realizar o seu trabalho.

Vamos parar um momento para analisar todos os dados que tem à sua disposição. Não se esqueça de que pode obter informações sobre os preços da concorrência e oferecer melhores ofertas aos seus clientes. 

A WebScrapingAPI oferece-lhe otimização de preços. Como? Deixe-me explicar da seguinte forma. A sua empresa pode crescer significativamente ao ter uma visão mais clara da concorrência. À medida que os preços flutuam no seu setor, pode utilizar os dados desta API para saber como a sua empresa irá sobreviver.

Secção do site WebScrapingAPI que explica a renderização em JavaScript para a extração de dados de aplicações de página única, com um gráfico da rede global

Fonte da imagem

A WebScrapingAPI é útil quando se procura um artigo que se pretende comprar. Pode utilizar os dados para comparar preços de vários fornecedores e escolher a melhor oferta.

Além disso, não precisa de se preocupar em ser bloqueado. Porquê? Porque esta API garante que obtém os dados de que precisa sem bloqueios. Com milhões de proxies rotativos, permanece indetetável e pode aceder a conteúdos com restrições geográficas utilizando um endereço IP específico.

Não é fantástico?

A infraestrutura da API também está construída na Amazon Web Services, oferecendo-lhe acesso a uma vasta base de dados global, segura e fiável. Por isso, empresas como a Steelseries, a Deloitte e a Wunderman Thompson confiam nesta API para as suas necessidades de dados e serviços de web scraping.

Secção de marketing da WebScrapingAPI que apresenta logótipos de clientes e um título sobre APIs de scraping prontas a usar

fonte

Além disso, custa apenas 49 dólares por mês. Estou impressionado com a velocidade que oferece. E, graças à utilização de uma rede global de proxies rotativos, conta já com mais de 10 000 utilizadores a utilizar os seus serviços. É por isso que recomendo a utilização da WebScrapingAPI para a recolha de dados.

Comece a sua jornada de scraping com a API REST líder em web scraping

Sobre o autor
Suciu Dan, cofundador da WebScrapingAPI
Suciu DanCo-fundador

Suciu Dan é cofundador da WebScrapingAPI e escreve guias práticos, voltados para programadores, sobre web scraping em Python, web scraping em Ruby e infraestruturas de proxy.

Comece a construir

Pronto para expandir a sua recolha de dados?

Junte-se a mais de 2.000 empresas que utilizam a WebScrapingAPI para extrair dados da Web à escala empresarial, sem quaisquer custos de infraestrutura.