如果您需要获取不同产品的评论,您可以在 Node 中快速完成,因为 Node 的异步功能可以帮助您轻松地从亚马逊获取数据。

在本文中,我们将仅使用几个 NodeJS 库一起抓取亚马逊评论和评论。

我们需要的第一件事是亚马逊 URL 列表,在此示例中,我们将使用 amazon.com URL。 我们收集了大约 1,000 个产品 ASIN 的样本,您可以从此处下载。

亚马逊产品列表下载 '亚马逊产品列表下载'

在 Node 中加载 Amazon URL

让我们创建一个文件 start.js 这将包含我们的节点代码。

让我们也安装我们的两个需求:

  • npm i cheerio
  • npm i proxycrawl

现在我们的项目结构应该至少包含以下文件:

亚马逊评论抓取文件夹结构

现在是时候开始编码了。 让我们在 start.js 文件,我们首先将 amazon-products.txt 文件加载到一个数组中。 我们可以使用以下代码来做到这一点:

1
2
3
4
5
常量 fs = 要求('fs');
常量 文件 = fs。读取文件同步('亚马逊产品.txt');
常量 网址 = 文件。字符串()。分裂('\n');

领事.日志(网址);

现在我们在数组中有了 URL,我们可以开始抓取它们了。 我们将使用 ProxyCrawl 节点库 我们之前安装的。

使用 ProxyCrawl 爬取亚马逊

我们需要初始化库并使用我们的令牌创建一个工人。 对于亚马逊,我们应该使用普通令牌,确保用您的实际令牌替换它 你的帐户.

我们必须在我们的项目中添加以下两行:

1
2
常量 { ProxyCrawlAPI } = 要求('代理爬行');
常量 api = ProxyCrawlAPI({ 象征: '你的令牌' });

结果代码如下:

1
2
3
4
5
6
常量 fs = 要求('fs');
常量 { ProxyCrawlAPI } = 要求('代理爬行');

常量 文件 = fs。读取文件同步('亚马逊产品.txt');
常量 网址 = 文件。字符串()。分裂('\n');
常量 api = ProxyCrawlAPI({ 象征: '你的令牌' });

现在是抓取 URL 的时候了,我们每秒会执行 10 个请求,这足以满足我们的测试需求,但如果您需要更多,请确保 联系 ProxyCrawl.

让我们构建我们的代码以每秒发送 10 个 API 请求……

1
2
3
4
5
6
7
8
常量 requestsPerSecond = 10;
VAR 当前索引 = 0;
设置间隔(() => {
提供 ( 我= 0; 我<请求每秒; 我++){
蜜蜂。得到(网址[当前索引]);
当前索引++;
}
}, 1000);

我们现在正在加载 URL,但我们没有对结果做任何事情。 所以现在是时候开始刮了😄

抓取亚马逊评论

我们将使用 节点 Cheerio 库 我们之前安装的用于解析生成的 HTML 并仅提取评论。

让我们首先包括cheerio:

1
常量 欢呼= 要求('cheerio');

现在让我们构建一个函数,它应该接收 HTML 并相应地解析它。

1
2
3
4
5
6
7
8
9
10
11
功能 解析HTML(HTML){
// 在cheerio中加载html
常量 $ = 快乐。加载(html);
// 加载评论
常量 评论 = $('。审查');
评论。((我,审查) => {
// 查找文本子项
常量 textReview = $(评论)。发现('.review-text').文本();
领事.日志(文本评论);
});
}

所以现在我们有了评论的文本内容,我们已经接近完成抓取了,但是我们缺少最关键的部分,即将我们的函数与我们之前的一段代码连接起来。 当我们打电话给 代理爬取 API.

完整的代码应如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
常量 fs = 要求('fs');
常量 { ProxyCrawlAPI } = 要求('代理爬行');
常量 欢呼= 要求('cheerio');

常量 文件 = fs。读取文件同步('亚马逊产品.txt');
常量 网址 = 文件。字符串()。分裂('\n');
常量 api = ProxyCrawlAPI({ 象征: '你的令牌' });

功能 解析HTML(HTML){
// 在cheerio中加载html
常量 $ = 快乐。加载(html);
// 加载评论
常量 评论 = $('。审查');
评论。((我,审查) => {
// 查找文本子项
常量 textReview = $(评论)。发现('.review-text').文本();
领事.日志(文本评论);
});
}

常量 requestsPerSecond = 10;
VAR 当前索引 = 0;
设置间隔(() => {
提供 ( 我= 0; 我<请求每秒; 我++){
蜜蜂。得到(网址 [当前索引])。然后((响应) => {
// 确保响应成功
if (回复。状态码 === 200 && 回复。原始状态 === 200){
解析HTML(回复。身体);
} 其他 {
领事.日志('失败的: ', 回复。状态码, 回复。原始状态);
}
});
当前索引++;
}
}, 1000);

代码已准备就绪,您可以每秒快速抓取 10 条亚马逊评论。 显然,对于这篇文章,我们只是在控制台中登录结果,您应该替换它 console.log 随心所欲。 它可以保存在数据库中,保存在文件中等。这取决于您。

我们希望你喜欢这个教程,我们希望很快见到你 代理爬取. 快乐爬行!