在这篇博文中,我们将探索创建一个 Wayfair 价格跟踪器,用于 Wayfair 价格跟踪这个著名在线市场的趋势。了解 Wayfair 价格运作的详细信息将有助于读者创建有用的解决方案,以做出明智的购买选择。本教程将演示如何创建一个用于抓取 Wayfair 定价数据的 Wayfair 价格跟踪器。

开始吧!

目录

先决条件

安装依赖关系

设置环境

从 Wayfair 中抓取 HTML 数据

  • 第1步:导入Crawlbase和fs库
  • 第 2 步:指定 Wayfair 页面 URL 和 API 令牌
  • 第三步:初始化CrawlingAPI对象
  • 第 4 步:发出 GET 请求
  • 步骤 5:检查响应状态代码
  • 第 6 步:处理错误

以 JSON 格式抓取 Wayfair 产品的价格数据

  • 第1步:导入所需的库
  • 第二步:抓取产品价格

将 Wayfair 价格数据保存在 CSV 文件中

总结

常见问题

1。 先决条件

在您开始使用以下方式跟踪 Wayfair 价格之前 Crawlbase 的爬行 APIJavaScript的,确保您的计算机上安装了 Node.js。 Node.js的 需要在本地运行 JavaScript 代码,这对于抓取网站很重要。您可以从 Node.js 的官方网站获取它。对 JavaScript 有基本的了解也很有帮助,包括变量、函数、循环和更改网页元素等内容。最后,获得一个 Crawlbase API 令牌,以便有效地使用他们的 API。 注册 在 Crawlbase 的网站上找到您的 API 令牌 帐号设定。这些令牌可让您访问和使用 爬取API的特点.

2. 安装依赖项

让我们安装将在整个教程中使用的依赖项。

1
2
3
npm 安装爬虫库
npm 安装 fs
npm 安装 Cheerio

要构建 Wayfair 价格跟踪器,您需要安装三个 npm 库: 爬行基地 与 Crawlbase API 进行高效交互,从 Wayfair 网站进行无缝网页抓取; fs 用于文件系统交互,可用于读取和写入文件以进行网络抓取的数据处理;和 欢乐,一个实现 jQuery 核心功能的轻量级库,非常适合在 Node.js 中解析 HTML/XML 文档以在网页抓取期间提取特定数据。

3.环境搭建:

打开您的终端并输入 mkdir wayfair-price-tracker 为您的项目创建一个新文件夹。

mkdir wayfair-price-tracker

现在,输入 cd wayfair-price-tracker 进入新文件夹。这可以帮助您更轻松地组织项目文件。

cd wayfair-price-tracker

接下来,输入 touch index.js 创建一个名为index.js的新文件(如果您愿意,可以选择其他名称)。

touch index.js

4. 从 Wayfair 中抓取 HTML 数据

现在我们的编码环境已经设置完毕,并且我们已经准备好了 API 凭据,让我们开始编写 JavaScript 代码以从 Wayfair 的网页中提取 HTML 数据。现在,选择您想要抓取的 Wayfair 网页。在此示例中,我们选择了 Wayfair 网页 家具类.

如何从 Wayfair 抓取数据

第1步:导入Crawlbase和fs库:

1
2
常量 { 抓取API } = 要求('crawlbase');
常量 FS = 要求('fs');

步骤 2:指定 Wayfair 页面 URL 和 API 令牌:

1
2
常量 抓取基础令牌 = 'YOUR_CRAWLBASE_TOKEN';
常量 wayfair页面URL = 'https://www.wayfair.com/furniture/sb0/sofas-c413892.html';

第三步:初始化CrawlingAPI对象:

1
常量 接口=  抓取API({ 象征:crawlbaseToken });

第 4 步:发出 GET 请求:

1
蜜蜂。得到(wayfairPageURL)。然后(处理CrawlResponse)。捕捉(处理抓取错误);

步骤 5:检查响应状态代码:

1
2
3
4
5
6
功能 处理抓取响应(响应){
if (回复。状态码 === 200){
fs。写文件同步('响应.html', 回复。身体);
领事.日志('HTML 已保存到response.html');
}
}

第 6 步:处理错误:

1
2
3
功能 处理抓取错误(错误){
领事.错误(错误);
}

完整代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
常量 { 抓取API } = 要求('crawlbase'),
FS = 要求('fs'),
抓取基础令牌 = 'YOUR_CRAWLBASE_TOKEN',
接口= 抓取API({ 象征:crawlbaseToken }),
wayfair页面URL = 'https://www.wayfair.com/furniture/sb0/sofas-c413892.html';

蜜蜂。得到(wayfairPageURL)。然后(处理CrawlResponse)。捕捉(处理抓取错误);
功能 处理抓取响应(响应){
if (回复。状态码 === 200){
fs。写文件同步('响应.html', 回复。身体);
领事.日志('HTML 已保存到response.html');
}
}

功能 处理抓取错误(错误){
领事.错误(错误);
}

代码说明:

  • 该脚本导入必要的模块: CrawlingAPI 来自文件系统操作的“crawlbase”和“fs”。
  • 它设置了一个 CrawlingAPI 具有指定令牌的实例,并定义要爬取的 URL,即 Wayfair 家具类别页面。
  • 该脚本调用 get() 的方法 CrawlingAPI 具有 Wayfair 页面 URL 的实例并指定用于处理成功的回调函数 (handleCrawlResponse) 和错误 (handleCrawlError).
  • handleCrawlResponse 函数,它检查响应状态代码是否为 200(表示成功),然后使用以下命令将响应的 HTML 内容写入名为“response.html”的文件 fs.writeFileSync() 并记录成功消息。
  • 如果抓取过程中出现错误, handleCrawlError 函数将错误记录到控制台。

HTML输出:

Wayfair HTML 数据

5. 以 JSON 格式抓取 Wayfair 产品的价格数据

在本节中,我们将学习以 JSON 格式抓取 Wayfair 产品的价格数据,以进行 Wayfair 价格跟踪。我们将通过使用两个库创建自定义 JavaScript 抓取器来实现此目的:Cheerio(通常用于网页抓取)和 fs(有助于文件操作)。该脚本将解析我们在前面的示例中获得的 Wayfair 网页的 HTML 代码,从其中提取产品价格 response.html,并将它们组织成 JSON 数组。

第1步:导入所需的库:

1
2
3
4
常量 FS = 要求('fs'),
欢呼= 要求('cheerio'),
html内容 = fs.读取文件同步('响应.html', 'utf-8'),
$ = 快乐。加载(html内容);

第二步:刮产品价格:

Wayfair 价格跟踪

要从网页获取产品价格,首先,在浏览器中打开该网页。然后,右键单击产品并选择“检查”以查看其代码。查找显示产品价格的代码部分。该部件通常位于一个称为“卡”的盒子内,其中保存有关产品的信息。

找到该卡后,请识别代表价格的代码的特定部分。它可能有一个属性名称,例如 “data-test-id”。然后,您可以使用像 Cheerio 这样的工具,通过其属性名称找到这部分代码。

使用 Cheerio 找到价格元素后,使用 ".text()" 方法来抓取其中的文本。这将为您提供价格值以及任何额外的字符或空格。要清理它并仅获取价格,请使用 ".trim()" 方法。这会删除价格文本周围的任何不必要的空格,从而为您提供整洁的结果。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
常量 产品={};

// 选择每个产品卡并提取名称和价格
$('div[data-hb-id="卡"]').((索引、元素) => {
产品名称 = $(元素).发现('p[data-test-id="ListingCard-ListingCardName-Text"]').文本()。修剪();
产品价格 = $(元素).发现('span[data-test-id="PriceDisplay"]').文本()。修剪();

// 检查productName是否为空,如果是,则分配默认消息
if (产品名称 === ''){
产品名称 = “姓名不可用”;
}

// 将产品详细信息添加到对象中
产品[产品名称] = { 车资: 产品价格 };
});

完整代码:

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
常量 FS = 要求('fs');
常量 欢呼= 要求('cheerio');

// 读取 HTML 文件
fs。读取文件('响应.html', 'utf8', (错误,数据) => {
if (呃) {
领事.错误(“读取文件时出错:”, 呃);
回报;
}

// 将HTML内容加载到cheerio中
常量 $ = 快乐。加载(数据);

// 存储产品详细信息的对象
常量 产品={};

// 选择每个产品卡并提取名称和价格
$('div[data-hb-id="卡"]').((索引、元素) => {
产品名称 = $(元素).发现('p[data-test-id="ListingCard-ListingCardName-Text"]').文本()。修剪();
产品价格 = $(元素).发现('span[data-test-id="PriceDisplay"]').文本()。修剪();

// 检查productName是否为空,如果是,则分配默认消息
if (产品名称 === ''){
产品名称 = “姓名不可用”;
}

// 将产品详细信息添加到对象中
产品[产品名称] = { 车资: 产品价格 };
});

// 将产品详细信息记录为 JSON
领事.日志(JSON.串化(产品, , 2));
});

JSON 输出:

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
36
37
38
39
40
41
{
“姓名不可用”: {
“价钱”: “ $ 899.99”
},
“Mahwah 98”雪尼尔方臂沙发”: {
“价钱”: “ $ 689.99”
},
“Adelmina 88.6 英寸软垫沙发”: {
“价钱”: “ $ 444.99”
},
“Azita 49 英寸人造皮革双人沙发”: {
“价钱”: “ $ 217.99”
},
“Vroni 71.6”方臂双人沙发”: {
“价钱”: “ $ 439.99”
},
“Arsha 84''软垫沙发”: {
“价钱”: “ $ 389.99”
},
“沙发床”: {
“价钱”: “ $ 424.42”
},
“Bolware 79”手工三人座沙发,软垫簇绒马车,实木沙发”: {
“价钱”: “ $ 389.99”
},
“Barrientez 85 英寸软垫沙发床”: {
“价钱”: “ $ 419.99”
},
“Perdue 81.5”天鹅绒方臂敞篷沙发”: {
“价钱”: “ $ 399.99”
},
“Arvida 54 英寸软垫双人沙发”: {
“价钱”: “ $ 213.99”
},
“Benitez Twin 76 英寸仿皮簇绒敞篷沙发”: {
“价钱”: “ $ 294.99”
},
“Liudmila 86 英寸软垫沙发”: {
“价钱”: “ $ 405.99”
}
}

6. 将 Wayfair 价格数据保存在 CSV 文件中

在本节中,我们将实现一个将抓取的产品数据保存到 CSV 文件中的过程。这涉及利用 fs (文件系统)模块读取 HTML 响应文件,用 Cheerio 解析它以提取数据,然后使用 csv-writer 库将提取的数据写入 CSV 文件。

该代码读取包含网站响应的 HTML 文件,使用 Cheerio 提取产品详细信息(例如名称和价格),并将它们存储在数组中。然后,它使用 csv-writer 创建一个名为“wayfair-prices.csv”的 CSV 文件并将产品详细信息写入其中。每个产品的名称和价格都存储在单独的列中。

此外,他们还需要安装 csv-writer 通过运行库 npm install csv-writer 在执行代码之前在终端/命令提示符中。该库能够以结构化格式将数据写入 CSV 文件,从而简化存储抓取数据以供进一步分析或使用的过程。

1
npm 安装 csv-writer
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
36
37
38
39
40
41
42
43
44
45
常量 FS = 要求('fs');
常量 欢呼= 要求('cheerio');
常量 csvWriter = 要求('csv-writer').创建ObjectCsvWriter;

// 读取 HTML 文件
fs。读取文件('响应.html', 'utf8', (错误,数据) => {
if (呃) {
领事.错误(“读取文件时出错:”, 呃);
回报;
}

// 将HTML内容加载到cheerio中
常量 $ = 快乐。加载(数据);

// 存储产品详细信息的数组
常量 产品=[];

// 选择每个产品卡并提取名称和价格
$('div[data-hb-id="卡"]').((索引、元素) => {
产品名称 = $(元素).发现('p[data-test-id="ListingCard-ListingCardName-Text"]').文本()。修剪();
产品价格 = $(元素).发现('span[data-test-id="PriceDisplay"]').文本()。修剪();

// 检查productName是否为空,如果是,则分配默认消息
if (产品名称 === ''){
产品名称 = “姓名不可用”;
}

// 将产品详细信息推送到数组
产品。({ 姓名: 产品名称, 车资: 产品价格 });
});

// 将产品详细信息写入 CSV 文件
常量 csvWriter实例 = csvWriter({
: 'wayfair-prices.csv',
[
{ id: “名称”, 标题: '产品名称' },
{ id: '价格', 标题: '价格' },
],
});

csvWriter实例
.写记录(产品)
.然后(() => 领事.日志('CSV 文件已成功写入'))
.捕捉((犯错) => 领事.错误(“写入 CSV 文件时出错:”, 呃));
});

总结

在本文中,我们学习了如何使用 Crawlbase 抓取 API 和 JavaScript 制作 Wayfair 价格跟踪器。我们首先从 Wayfair 网页获取 HTML 数据并将其保存在名为的文件中 response.html。然后,我们制作了一个特殊的刮刀来获取 名称和价格 网页上每个产品的信息。我们希望本教程对您有所帮助且易于理解。如果您对本文有任何疑问或反馈,请随时联系 爬网支持。我们的团队将在一天内回复您。

相关指南:

如何刮Trulia

如何抓取维基百科

如何抓取 TripAdvisor

如何抓取 Google 新闻

常见问题

什么是 Wayfair 价格追踪器?

Wayfair 价格追踪器可让您监控 Wayfair 在线市场上列出的产品价格。它自动收集特定商品的定价信息,并向用户提供价格随时间变化的最新信息。通过利用这样的工具,购物者可以随时了解价格波动,使他们能够做出更明智的购买决定,并有可能通过利用 Wayfair 卖家提供的折扣或降价来省钱。

什么是 Wayfair 价格跟踪?

Wayfair 价格跟踪涉及监控 Wayfair 平台上的产品价格,以随时了解波动、折扣和促销信息。它可以帮助消费者做出明智的购买决定,并通过战略性地安排购买时间来节省资金。

Wayfair 定价如何运作?

Wayfair 定价采用动态模型,受产品需求、可用性和竞争等多种因素影响。 Wayfair 上的卖家设定自己的价格,该价格可能会根据情况而波动 市场 状况。此外,Wayfair 可能会定期调整价格,以保持在线市场的竞争力。折扣、促销和销售活动也会导致价格变化。这种动态定价系统使 Wayfair 能够迅速适应市场变化,同时为客户提供不同类别产品的一系列定价选项。

Wayfair 上的价格可能会发生变化吗?

Wayfair 以其波动的价格而闻名,经常在不同地点甚至一天内发生变化。这些价格变化主要是由 Wayfair 的算法定价模型,不断实时收集和分析数据。由于这些动态波动,消费者很难确定任何给定产品的固定价格。对于用户来说,跟踪 Wayfair 及其附属网站上的这些价格变化变得更加困难。

为了浏览这些价格变化并找到 Wayfair 产品的最佳优惠,可靠的价格跟踪和监控服务至关重要。通过利用Crawlbase Crawling API等解决方案,用户可以有效监控Wayfair的价格。这使用户能够做出明智的购买决策并确保 Wayfair 产品的最佳交易。

使用 Wayfair 价格跟踪器合法吗?

使用 Wayfair 价格跟踪器通常是合法的,因为它涉及监控 Wayfair 网站上的公开信息。但是,用户应确保遵守 Wayfair 的服务条款以及有关数据抓取和在线活动的任何适用法律或法规。价格跟踪器仅供个人使用,并避免任何可能被视为滥用或违反网站使用条款的行为,这一点至关重要。如果不确定使用此类工具的合法性,请务必咨询法律建议。

如何跟踪 Wayfair 上的价格下跌情况?

要跟踪 Wayfair 上的价格下降,一种有效的方法是利用网络抓取工具,例如 Crawlbase Crawling API。该API可以实时提取Wayfair网站上的产品价格,让用户能够高效监控变化。通过将 Crawlbase API 集成到他们的系统中,用户可以自动执行从 Wayfair 收集价格数据的过程,使他们能够随时了解价格下跌情况并及时做出购买决策,以确保获得最佳交易。