ProxyCrawl 的 Crawler 是一个多功能的网络爬虫,可让您大规模提取在线数据。 Crawler 简化了爬取过程,让您可以方便有效地获取大数据。 这是您控制网络抓取并获取业务需求所需的数据所需要的。

Crawler 毫不费力地处理 JavaScript 浏览器、队列、代理、数据管道和其他网络抓取困难。 这使您能够轻松地充分利用数据提取和检索在线信息。

在本教程结束时,您将了解如何使用 Crawler 从在线资源中检索数据。

我们将涵盖的内容

  • 什么是爬行者?
  • 爬虫的工作原理
  • 如何创建本地 webhook
  • 如何暴露本地服务器
  • 如何创建爬虫
  • 如何发送爬虫请求

你需要什么

准备好了?

我们走吧…

什么是爬行者?

建立在 Crawling API 之上, 履带 是一个推送系统,可让您无缝快速地抓取数据。 它在 Crawling API 之上异步工作。

Crawler 适用于需要抓取大量数据的大型项目。 在您的服务器上设置 webhook 端点后,收集的数据将在那里传送,允许您对其进行编辑和自定义以满足您的特定需求。

爬虫提供以下好处:

  • 轻松将抓取的数据添加到您的应用程序,而无需管理队列、块、代理、验证码、重试和其他网络爬取瓶颈的复杂性。
  • 将抓取的数据获取到所需的 Webhook 端点,让您可以方便地将数据集成到您的特定用例中。
  • 在任何类型的网站上执行高级网页抓取,包括支持 JavaScript 渲染的复杂网站。
  • 匿名抓取数据,无需担心泄露您的身份。
  • 使用不需要长期合同的简单定价模型抓取在线数据。 您只需为成功的请求付费。

爬虫的工作原理

如前所述,Crawler 在 抓取 API. 这使您可以增强 Crawling API 的功能并轻松流畅地提取数据。

这是使用 Crawling API 发出请求的方法:

https://api.proxycrawl.com/?token=add_token&url=add_url

正如您在上面看到的,除了 URL 的基本部分之外,Crawling API 还需要以下两个强制性查询字符串参数:

  • ProxyCrawl 提供的唯一授权令牌,用于授权您使用 API。 您可以使用普通令牌发出通用 Web 请求,也可以使用 JavaScript 令牌发出高级、真实的浏览器请求。
  • 您要抓取的网站的 URL。 它应该以 HTTP 或 HTTPS 开头。 还应该对其进行编码以确保通过 Internet 进行有效传输。

使用爬虫时,除了以上两个查询字符串参数外,还需要添加以下两个强制参数:

  • 回调参数— &回调=真
  • 您的爬虫的名称(我们稍后会看到如何创建爬虫)— &crawler=add_crawler_name

因此,您的 Crawler 请求将如下所示:

https://api.proxycrawl.com?token=add_token&callback=true&crawler=add_crawler_name&url=add_url

由于 Crawler 使用回调,因此您需要创建一个 网络挂钩 服务器上的端点以接收抓取的数据。

Webhook 应满足以下条件:

  • ProxyCrawl 服务器应该可以公开访问它。
  • 它应配置为接收 HTTP POST 请求并在 200 毫秒内响应状态码为 200、201 或 204。

发出请求后,爬虫引擎将收集指定的数据,并使用带有 GZIP 数据压缩方案的 HTTP POST 方法将其发送到您的回调端点。

默认情况下,数据使用 HTML 格式进行结构化; 也就是说,作为 &格式=html. 您还可以指定接收 JSON 格式的数据,使用 &格式=json 查询字符串参数。

如何创建本地 webhook

让我们演示如何在服务器上创建一个 webhook 端点来接收抓取的数据。

在本教程中,我们将使用 Express Node.js Web 应用程序框架在我们的机器上创建本地 Webhook 服务器。 然后,我们将使用 ngrok 使我们的本地服务器可以通过 Internet 安全访问。 这将确保 ProxyCrawl 服务器可以公开访问我们的 webhook。

首先,在您的开发环境中创建一个新目录,在终端窗口中导航到该目录,然后运行以下命令来初始化一个新的 Node.js 项目:

npm初始化

接下来,安装 Express 框架:

npm 安装快递

接下来,创建一个名为 服务器.js 并添加以下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// 导入快递
常量 快递= 要求('表示');

// 初始化 express 并定义一个端口
常量 应用= 特快();
常量 PORT = 3000;

// 告诉 express 将传入的原始正文数据解析为字符串
应用程序。使用(表示。文本({ 限制: '2mb' }));

// 使用 urlencoded 有效负载解析传入的请求
应用程序。使用(表示。网址编码({ 扩展: true }));

// 设置 webhook 路由
应用程序。发表('/', (请求,资源) => {
领事.日志(要求。); // 访问所有 HTTP API 标头

领事.日志(要求。身体); // 将抓取的数据输出到控制台

资源状态(200).结束(); // 响应很重要
});

应用程序。(PORT, () => 领事.日志(`🚀 在端口上运行的 Webhook ${端口}`));

如果您以前使用过 Express,上面的代码可能看起来很熟悉。 我们首先初始化 Express 并定义一个端口。

接下来,我们使用内置的 express.text() 中间件函数来解析传入的原始正文数据并将其作为纯字符串返回。 我们使用它是因为 ProxyCrawl 在 API 标头中使用 text/plain 的内容类型。

我们通过了 限制 参数属性到函数中,以指定我们打算接收的数据量并避免压倒我们的服务器。 中间件功能也会自动解压 GZIP 编码的爬取数据。

我们还使用了内置 express.urlencoded() 中间件函数来解析带有 urlencoded 有效载荷的传入请求,并将它们转换为我们可以使用的格式。 我们通过了 扩展 参数属性到函数中来指定我们需要使用的 qs 查询字符串解析和字符串化库。

请注意,我们在定义 webhook 的路由之前告诉 Express 使用中间件。 这将使它们在路由之前执行,确保路由可以访问 HTTP POST 正文中的解析数据。

接下来,我们设置一个简单的 webhook 路由来处理来电。 我们在 http://localhost:3000/ 来处理请求。

我们所使用的 身体 的财产 REQ 对象将爬取的数据记录在控制台上。 我们还使用 属性。

使用 HTTP 2xx 状态码快速响应也很重要。 ProxyCrawl Crawler 需要在 200 毫秒内做出响应。

接下来,要启动简单的 Express webhook 应用程序,请运行以下命令:

节点server.js

记得保持本地服务器运行; 不要关闭它。

如何暴露本地服务器

下一个任务是使用 ngrok 将本地运行的服务器公开给全世界。 有几种设置 ngrok 的方法。 对于本教程,我们将 下载 ngrok 它,解压缩 ngrok.exe 文件,并将文件存储在我们本地计算机上的文件夹中。

要启动 ngrok,请启动另一个终端,导航到存储可执行文件的目录,然后运行以下命令:

恩格罗克 http 3000

请注意,我们在端口 3000 上暴露了服务器,这与本地 webhook 应用程序正在侦听的端口相同。

启动 ngrok 后,它将显示一个带有公共 URL 的 UI,本地服务器被转发到该 URL。 这是我们将用于在 ProxyCrawl 的仪表板上创建爬虫的 URL。 UI 还显示其他状态和指标信息。

暴露本地服务器

如何创建爬虫

如前所述,爬虫要求您将爬虫的名称附加为其查询字符串参数之一。

您需要导航到 ProxyCrawl 的仪表板和 在这里创建一个爬虫.

创建爬虫

您需要提供一个唯一的名称来标识您的爬虫。 在回调 URL 部分,让我们输入我们之前创建的公共 ngrok URL。 这是抓取的数据将被传送到的地方。

您还将指定是需要发出普通请求还是真正的浏览器请求。

完成后,单击 创建爬虫 按钮。

然后,您会在 搜寻器页面.

如何发送爬虫请求

一切都设置好了,现在是时候发送 Crawler 请求并检索一些在线数据了。 这是真正的行动开始的地方。 对于本教程,我们将检索 这页.

在 Node.js 中发出 HTTP 请求的方法有很多种。 对于本教程,我们将使用轻量级 ProxyCrawl Node.js 库.

打开另一个终端窗口并安装它:

npm 安装代理爬虫

接下来,创建一个名为 请求.js 并添加以下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
常量 { 抓取API } = 要求('代理爬行');
常量 api = 抓取API({ 象征: 'add_token' });
API
.得到('https://www.forextradingbig.com/10-facts-you-must-know-on-online-forex-trading/',{
回电话: '真的',
履带: 'myproxycrawler',
})
.然后((响应) => {
if (回复。状态码 === 200){
领事.日志(回复。身体);
}
})
.捕捉((错误) => 领事.错误);

要发出请求,请运行以下命令

节点请求.js

如果请求成功,Crawler 将返回一个带有唯一标识符 RID 的 JSON 表示。 您可以使用 RID 来识别将来的请求。

这是我们得到的推送响应:

RID 标识符

如果我们检查我们的 webhook 服务器,我们可以看到目标页面的 HTML 内容被成功抓取:

Ngrok 用户界面

请注意,在 webhook 服务器上收到了相同的 RID,就像在推送响应中一样。

ngrok UI 还显示 POST 请求成功:

发布请求

而已!

总结

在本教程中,我们演示了如何使用多功能 ProxyCrawl 的 Crawler 通过异步回调函数从在线资源中抓取数据。

使用爬虫,您可以快速流畅地进行在线数据提取。 在检索在线信息时,您不必担心泄露您的身份或遇到访问障碍。 这是您将网络爬取工作提升到新水平所需要的。

如果您想了解有关如何使用 API 的更多信息,请查看 它的文档在这里.

点击这里 创建一个免费的 ProxyCrawl 帐户并开始使用 Crawler。