Node-fetch
Node-Fetch 是一个小型模块,用于为 Node.js 添加 Fetch API。

借助 fetch(无论是浏览器中的 fetch 还是通过 Node Fetch),你可以结合 await 和 .then 语法,让将读取流转换为 JSON 的过程变得更加顺手——因此,data,
如下面的示例所示,其中包含 JSON 数据,无需使用难看的中间变量。

此外,Node Fetch 还支持一些实用的扩展功能,例如响应大小限制、重定向限制以及用于调试的显式失败处理。
您可以使用多种库(包括 Node.js 中的 node-fetch)来发送或获取数据。而在客户端,JavaScript 的 Fetch API 也可用于实现相同的功能
在获取 Google 主页之前,你可以加载 node-fetch 模块。你向 fetch() 方法提供的唯一参数就是你要发送 HTTP 请求的目标服务器地址。
由于 node-fetch 基于 Promise,您可以串联使用几个 .then() 方法,以便更好地控制请求的响应和数据。
“URL”字段仅包含我们要获取的资源的实际 URL。如果这不是一个绝对 URL,该函数将执行失败。
当您希望将 get() 用于标准 GET 请求以外的其他用途时,我们会使用可选的 options 参数,但我们稍后会对此进行更详细的说明。
该方法返回一个 Response 对象,该对象提供了实用函数和 HTTP 响应信息,例如:
- Text () - 返回答案正文,格式为字符串。
- JSON() - 将响应正文转换为 JSON 对象,若无法处理则返回错误。
- Status 和 statusText - 这些字段包含有关 HTTP 状态码的信息。
- 好的——如果状态码为 2xx 状态码(表示成功),则返回 true。
- Headers - 一个用于存储响应头信息的对象;可使用 get() 函数获取单个响应头。
人气
- 800 万次 npm 每周下载量
- +6.8K 个依赖于 node-rest 的模块
- +383 分支
- 3.8K GitHub 星标
- 38位贡献者
node-fetch 的特点
- 保持与窗口 .fetch API 的一致性。
- 在遵循流规范和 WHATWG fetch 规范的实现细节时,应权衡利弊,并说明已知的差异。
- 使用异步函数和原生 Promise
- 在请求和响应中,都应使用原生 Node 流处理正文。
- 正确解码内容编码(gzip/brotli/deflate),并自动将字符串输出(包括 res.json() 和 res.text())转换为 UTF-8。
- 在调试过程中,一些有用的功能包括响应大小限制、重定向限制以及显式错误提示。
优点
- Node-fetch 的安装大小约为 150 KB,或许是目前最轻量级的 HTTP 请求模块。
- 它提供了诸多令人印象深刻的功能,例如 JSON 模式、Promise API、浏览器兼容性、请求取消,以及替换其 Promise 库或解码 deflate/grip 等现代 Web 编码格式的能力。
- 它遵循最新的 JavaScript HTTP 请求规范,仍是继 request 之后下载量最高的模块,每周下载量约为 800 万次(超过 Got、Axios 和 Superagent)。
为什么你需要一个 Node-fetch 的替代方案
- 它不支持 HTTP/2 或 Cookie
- Node-fetch 不支持符合 RFC 标准的缓存
- Node-fetch 在失败时不会重试。
- 它不支持进度事件、元数据错误、高级超时或钩子。
我最推荐的 node-fetch 替代方案
以下是我精选的 5 款 node-fetch 替代方案,您可以将其应用于您的解决方案中
- 阿克西奥斯
- 已收到
- 超级经纪人
- 请求
- WebscrapingAPI
我将逐一为您介绍,以便您更好地了解它们是什么以及它们能提供什么。
让我们开始吧!
1. Axios
Axios 是一个基于 Promise 的 HTTP 客户端,适用于 Node.js 和浏览器。它与 SuperAgent 类似,能够自动解析 JSON 响应。Axios 支持并发查询的功能使其更具优势。总之,
安装 Axios

您可以通过传递相应的配置来进行请求。

由于其简单易用,一些开发者更倾向于使用 Axios 而不是内置 API。然而,许多人高估了此类库的必要性。node-fetch 完全能够实现 Axios 的核心功能。
人气
- +440万次 npm 下载
- +15.6K 个模块依赖于它
- +5.7万个 GitHub 星标
- 71位贡献者
- +4.4K 次分叉
特点
- 在浏览器中发起 XMLHttpRequest 请求
- 支持 Promise API
- 在 Node.js 中发送 HTTP 请求
- 拦截响应和请求
- 取消请求
- 转换响应和请求数据
- JSON 数据的自动转换
- 数据对象的自动序列化
- 客户端支持
优点
- 通过向 Axios 提供一个配置对象,您可以全面配置和自定义请求。它能够监控 POST 请求的状态,并对 JSON 数据执行自动修改。
- Axios 也是使用最广泛的前端 HTTP 请求模块。它非常受欢迎,并遵循最新的 JavaScript 设计模式。它支持请求取消、重定向、gzip/deflate 压缩、元数据处理以及钩子功能。
缺点
- Axios 不支持 HTTP/2、Stream API 和 Electron。它也不会对失败请求进行重试,且在支持内置 Promise 的 Node.js 环境中运行。旧版本需要使用 Q Promise 或 Bluebird。 2. Got
Got 是又一个面向 Node.js 的易用且功能强大的 HTTP 请求框架。它最初是作为流行包 Request 的轻量级替代方案而设计的。请查看这张详尽的对比表,了解 Got 与其他库相比有何不同。
安装方法如下:

Got 提供了一项用于处理 JSON 有效载荷的选项。

Unlike SuperAgent and Axios, Got does not automatically parse JSON. To enable this capability, { JSON: true } is added as an argument in a code.
根据文档显示,Got 报错是因为请求过大(其大小达数千兆字节!)。(实际发送量为 4.46 MB,而接收量仅为 302 KB)。
人气
- +620万次 npm 下载
- +2.5K 个模块取决于 Got
- +280 次分叉
- +5K GitHub 星标
- 71位贡献者
特点
- 支持 HTTP/2
- 支持 PromiseAPI 和 StreamAPI
- 失败时重试
- 遵循重定向
优点
- 与其他替代方案相比,Got 支持更多功能,且因其易于使用、安装体积小,并能紧跟所有 JavaScript 新趋势,正日益受到欢迎。
缺点
- Got 不支持浏览器 3. SuperAgent
SuperAgent 是一个轻量级的 HTTP 请求库,可在 Node.js 和浏览器中用于执行 AJAX 请求。
SuperAgent 提供了数千个插件,可用于执行诸如阻止缓存、转换服务器有效载荷以及对 URL 添加后缀或前缀等任务。
安装 SuperAgent

在 Node.js 中的用法

您还可以通过创建自己的插件来增加功能。SuperAgent 还可以为您解析 JSON 数据。
人气
- 250万次 npm 下载
- +6.4K 个模块依赖于 SuperAgent
- +1.2K 次分叉
- 在 GitHub 上获得 1.4 万个星标
- 182位贡献者
优点
- Superagent 以提供流畅的 HTTP 请求接口、插件架构以及多种现成插件而闻名,这些插件支持许多常用功能(例如,其 prefix 插件可为每个 URL 添加前缀)。
- Superagent 还提供了流和 Promise API、请求取消、请求失败时的重试功能,支持 gzip/deflate 压缩,并能处理进度事件。
缺点
- Superagent 的构建目前正在失败。此外,它也不像 XMLHttpRequest 那样提供上传进度跟踪功能。
- 它不支持定时器、元数据错误或钩子。 4. 请求
Request 是 Node.js 中最受欢迎的简单 HTTP 请求客户端之一,也是首批发布到 npm 注册表的模块之一。

该库每周下载量超过1400万次,旨在成为在 Node.js 中执行 HTTP 请求的最简单方式。
文件也可以通过 POST 或 PUT 请求进行流式传输。此方法将根据文件扩展名与内容类型的映射关系进行比对。
您还可以在选项对象中自定义 User-Agent 等 HTTP 头。
属性
- +900万次 npm 下载
- +6.4K 个模块,具体取决于请求
- +3.2K 次分叉
- 在 GitHub 上获得 2.52 万个星标
- 126位贡献者
特点
- 它支持HTTPS
- 默认情况下,会跟随重定向。
优点
- Request 不仅入门简单,而且易于使用。
- 这是一个用于发起 HTTP 请求的流行且广泛使用的模块
缺点
该功能自2020年起已完全弃用。预计不会有新的变更。
5. WebScrapingAPI
我必须说,WebScrapingAPI 为我从网络上抓取数据时遇到的难题提供了解决方案。WebScrapingAPI 帮我节省了时间和金钱,让我能够专注于产品开发。
WebscrapingAPI 是一款企业级、可扩展且易于使用的 API,可帮助您收集和管理 HTML 数据。别忘了,您所有的网页抓取解决方案都集成在一个 API 中,这意味着您的代码将更加简洁。
设置 API 密钥和 URL 参数,以及您对要抓取的网站的访问密钥,是您可以向 API 提出的最直接的基本请求。
了解 WebScrapingAPI 提供的各项功能,对于我们开展网络爬虫工作至关重要。相关 信息可在详尽的文档中查阅,其中包含多种编程语言的代码示例。
我多次遇到反制措施,它们能检测并阻止我的机器人执行指令。这是因为并非所有网站都能被抓取。有些网站采用了浏览器指纹识别和验证码等反制措施,这实在令人头疼。
应对反机器人技术或许颇具挑战,但 WebScrapingAPI 提供了从验证码到 IP 封锁及自动重试的全方位解决方案,助您轻松应对。您只需专注于自身目标,其余事宜皆由他们代劳。

它拥有出色的技术实力,配备超过1亿个代理服务器,确保您不会被封禁。这是因为某些网站的数据只能在全球特定地区进行抓取。为此,您需要使用代理服务器来访问这些数据。
由于管理代理池颇具难度,WebScrapingAPI 将为您包办一切。它拥有数百万个轮换代理,确保您的操作不被察觉。此外,您还可以通过特定的 IP 地址访问受地理限制的内容。
此 API 支持 JavaScript 渲染。您可以在真实浏览器中启用 JavaScript 渲染。启用后,您将看到用户端显示的所有内容。这包括使用 AngularJS、React 或其他库构建的单页应用程序。

用户所见即所得。还有什么比这更强大的竞争优势呢?
此外,该 API 的基础设施基于亚马逊网络服务(AWS)构建,可让您访问海量、安全且可靠的全球数据。
在我看来,使用 WebScrapingAPI 就是一场胜利。
优点
- 基于 AWS 构建
- 价格合理
- 痴迷速度的建筑
- 每个包都包含 JavaScript 渲染
- 优质服务、高可用性及绝对稳定性
- 超过1亿个轮换代理,以减少阻塞
- 可定制的功能
缺点
目前还没有。
定价
- 使用此 API 的入门套餐价格为每月 49 美元。
- 免费试用选项
如果你觉得没有时间从头开始构建网络爬虫,WebScrapingAPI 是一个不错的选择。不妨去看看。
为什么 WebScrapingAPI 是我的首选推荐:
我推荐 WebScrapingAPI,因为它通过一个 API 为所有人提供了简单易用的网络爬取解决方案。此外,它还拥有业界顶尖的用户界面,让数据爬取变得轻而易举。
该 API 功能强大,足以胜任您的任务。
让我们花点时间,仔细看看您手头的所有数据。别忘了,您可以了解竞争对手的定价,从而为客户提供更优惠的方案。
WebScrapingAPI 为您提供价格优化服务。如何实现?让我这样解释:通过更清晰地了解竞争对手,您的业务可以实现显著增长。随着行业内价格的波动,您可以利用该 API 提供的数据,从而明确企业如何在市场中立足。

在搜索想要购买的商品时,WebScrapingAPI 非常实用。您可以利用这些数据比较不同供应商的价格,从而选择最划算的交易。
此外,您无需担心被封禁。为什么?因为该 API 能确保您在不受任何阻碍的情况下获取所需数据。凭借数百万个轮换代理,您将保持隐身状态,并能通过特定 IP 地址访问受地理限制的内容。
这有多酷啊?
该 API 的基础设施同样构建于亚马逊网络服务(AWS)之上,可为您提供海量、安全且可靠的全球数据。因此,Steelseries、德勤(Deloitte)和 Wunderman Thompson 等公司都信赖该 API,将其用于满足数据需求和网络爬虫服务。

此外,每月仅需 49 美元。我对它的速度着迷不已。凭借其全球轮换代理网络,目前已有超过 10,000 名用户在使用其服务。这就是为什么我推荐在抓取数据时使用 WebScrapingAPI。




