我们当前的网站通常依赖于数十种不同的资源,例如图像、CSS、字体、JavaScript、JSON 数据等的整体集合。然而,世界上第一个网站仅用 HTML 编写。
JavaScript作为一种优秀的客户端脚本语言,在网站的发展过程中发挥了重要的作用。借助 XMLHttpRequest 或 XHR 对象,JavaScript 可以实现客户端和服务器之间的通信,而无需重新加载页面。
然而,这个动态过程受到了 Fetch API 的挑战。什么是获取 API?如何在 如何使用 Node-Fetch API 在 Node.js 中发出 HTTP 请求? 中使用 Fetch API?为什么 Fetch API 是更好的选择?
现在就开始从本文中获取答案!
在 如何使用 Node-Fetch API 在 Node.js 中发出 HTTP 请求? 中,HTTP 请求是构建 Web 应用程序或与 Web 服务交互的基本部分。它们允许客户端(如浏览器或其他应用程序)向服务器发送数据,或从服务器请求数据。这些请求使用超文本传输协议 (HTTP),它是网络数据通信的基础。
如何使用 Node-Fetch API 在 Node.js 中发出 HTTP 请求? 凭借其独特的特性、强大的生态系统以及异步、非阻塞架构,已成为网页抓取和自动化任务的首选技术之一。
为什么 如何使用 Node-Fetch API 在 Node.js 中发出 HTTP 请求? 是网络抓取和自动化的理想选择?让我们来弄清楚它们吧!
Node-fetch 是一个轻量级模块,它将 Fetch API 引入 如何使用 Node-Fetch API 在 Node.js 中发出 HTTP 请求? 环境。它简化了发出 HTTP 请求和处理响应的过程。
Fetch API 围绕 Promises 构建,非常适合异步操作,例如从网站抓取数据、与 RESTful API 交互或自动化任务。
Fetch API 是一个基于 Promise 的现代接口,与传统的 XMLHttpRequest 对象相比,旨在以更高效、更灵活的方式处理网络请求。
当代浏览器原生支持它,这意味着不需要额外的库或插件。在本指南中,我们将探讨如何利用 Fetch API 执行 GET 和 POST 请求,以及如何有效管理响应和错误。
? 注意:如果您的计算机上没有安装 如何使用 Node-Fetch API 在 Node.js 中发出 HTTP 请求?,您需要先安装它。您可以在这里下载适合您操作系统的如何使用 Node-Fetch API 在 Node.js 中发出 HTTP 请求?安装包。推荐的 如何使用 Node-Fetch API 在 Node.js 中发出 HTTP 请求? 版本为 18 及以上。
如果您还没有创建项目,可以使用以下命令创建一个新项目:
mkdir fetch-api-tutorial cd fetch-api-tutorial npm init -y
打开package.json文件,添加type字段,并将其设置为module:
{ "name": "fetch-api-tutorial", "version": "1.0.0", "description": "", "main": "index.js", "type": "module", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC" }
这是一个在 如何使用 Node-Fetch API 在 Node.js 中发出 HTTP 请求? 中使用 Fetch API 的库。您可以使用以下命令安装node-fetch库:
npm install node-fetch
下载完成后,我们就可以开始使用Fetch API发送网络请求了。在项目根目录下新建文件index.js,添加以下代码:
import fetch from 'node-fetch'; fetch('https://jsonplaceholder.typicode.com/posts') .then((response) => response.json()) .then((data) => console.log(data)) .catch((error) => console.error(error));
执行以下命令运行代码:
node index.js
我们将看到以下输出:
如何使用Fetch API发送POST请求?请参考以下方法。在项目根目录下新建文件post.js,添加以下代码:
import fetch from 'node-fetch'; const postData = { title: 'foo', body: 'bar', userId: 1, }; fetch('https://jsonplaceholder.typicode.com/posts', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(postData), }) .then((response) => response.json()) .then((data) => console.log(data)) .catch((error) => console.error(error));
我们来分析一下这段代码:
执行以下命令运行代码:
mkdir fetch-api-tutorial cd fetch-api-tutorial npm init -y
您可以看到的输出:
我们需要在项目根目录下新建一个文件response.js,并添加以下代码:
{ "name": "fetch-api-tutorial", "version": "1.0.0", "description": "", "main": "index.js", "type": "module", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC" }
在上面的代码中,我们首先填写了错误的URL地址来触发HTTP错误。然后我们在 then 方法中检查结果响应的状态码,如果状态码不是 200 则抛出错误。最后,我们在 catch 方法中捕获错误并打印出来。
执行以下命令运行代码:
npm install node-fetch
代码执行后,您将看到以下输出:
CAPTCHA(区分计算机和人类的完全自动化公共图灵测试)旨在防止网络抓取工具等自动化系统访问网站。它们通常要求用户通过解决谜题、识别图像中的物体或输入扭曲的字符来证明自己是人类。
许多现代网站使用 React、Angular 或 Vue.js 等 JavaScript 框架来动态加载内容。这意味着您在浏览器中看到的内容通常是在页面加载后呈现的,因此很难使用依赖静态 HTML 的传统方法进行抓取。
网站通常会采取措施来检测和阻止抓取活动,最常见的方法之一是 IP 阻止。当短时间内从同一 IP 地址发送太多请求时,就会发生这种情况,导致网站标记并阻止该 IP。
Scrapeless 是最好的综合抓取工具之一,因为它能够实时绕过网站封锁,包括 IP 封锁、CAPTCHA 挑战和 JavaScript 渲染。它支持 IP 轮换、TLS 指纹管理和验证码解决等高级功能,非常适合大规模网页抓取。
它与 如何使用 Node-Fetch API 在 Node.js 中发出 HTTP 请求? 的轻松集成和避免检测的高成功率使 Scrapeless 成为绕过现代反机器人防御的可靠且高效的选择,确保抓取操作顺利且不间断。
只需遵循一些简单的步骤,您就可以将 Scrapeless 集成到您的 如何使用 Node-Fetch API 在 Node.js 中发出 HTTP 请求? 项目中。
是时候继续滚动了!下面将会更加精彩!
开始之前,您需要注册一个Scrapeless帐户。
我们需要进入 Scrapeless Dashboard,点击左侧的“Scraping API”菜单,然后选择您要使用的服务。
这里我们可以使用“亚马逊”服务
进入Amazon API页面,我们可以看到Scrapeless为我们提供了三种语言的默认参数和代码示例:
这里我们选择 如何使用 Node-Fetch API 在 Node.js 中发出 HTTP 请求? 并将代码示例复制到我们的项目中:
Scrapeless 的 如何使用 Node-Fetch API 在 Node.js 中发出 HTTP 请求? 代码示例默认使用 http 模块。我们可以使用node-fetch模块来替代http模块,这样我们就可以使用Fetch API来发送网络请求了。
首先在我们的项目中创建一个 scraping-api-amazon.js 文件,然后将 Scrapeless 提供的代码示例替换为以下代码示例:
mkdir fetch-api-tutorial cd fetch-api-tutorial npm init -y
通过执行以下命令来运行代码:
{ "name": "fetch-api-tutorial", "version": "1.0.0", "description": "", "main": "index.js", "type": "module", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC" }
我们将看到 Scrapeless API 返回的结果。这里我们只是将它们打印出来。您可以根据需要对返回结果进行处理。
Scrapeless提供了Web解锁器服务,可以帮助您绕过常见的反抓取措施,如验证码绕过、IP封禁等。Web解锁器服务可以帮助您解决一些常见的爬取问题,让您的爬行任务更加顺利。
为了验证Web解锁服务的有效性,我们可以先使用curl命令访问需要验证码的网站,然后使用Scrapeless Web解锁服务访问同一网站,看看验证码是否能够成功绕过。
mkdir fetch-api-tutorial cd fetch-api-tutorial npm init -y
通过查看返回结果,可以看到该网站已接入Cloudflare验证机制,需要输入验证码才能继续访问该网站。
在这里我们创建一个新的 web-unlocker.js 文件。我们仍然需要使用node-fetch模块来发送网络请求,所以我们需要将Scrapeless提供的代码示例中的http模块替换为node-fetch模块:
{ "name": "fetch-api-tutorial", "version": "1.0.0", "description": "", "main": "index.js", "type": "module", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC" }
执行以下命令来运行脚本:
npm install node-fetch
看! Scrapeless Web解锁器成功绕过验证码,我们可以看到返回结果中包含了我们需要的网页内容。
为了让您的选择更方便,Axios 和 Fetch API 有以下区别:
Node 最显着的特性。 如何使用 Node-Fetch API 在 Node.js 中发出 HTTP 请求? v21 是 Fetch API 的稳定性。
对于新项目,建议使用 Fetch API,因为它具有现代功能且简单。但是,如果您需要支持非常旧的浏览器或维护遗留代码,Ajax 可能仍然是必要的。
如何使用 Node-Fetch API 在 Node.js 中发出 HTTP 请求? 中添加 Fetch API 是一个期待已久的功能。在 如何使用 Node-Fetch API 在 Node.js 中发出 HTTP 请求? 中使用 Fetch API 可以确保您的抓取工作轻松完成。但使用 Node Fetch API 时难免会遇到严重的网络阻塞
以上是如何使用 Node-Fetch API 在 Node.js 中发出 HTTP 请求?的详细内容。更多信息请关注PHP中文网其他相关文章!