在我们日益以数据为中心的世界中,访问实时信息的能力不仅具有优势,而且还具有优势。 这通常是必需的。 对于寻求保持领先地位的企业和研究人员来说尤其如此。 幸运的是,电子商务网站提供了丰富的数据源,提供了名副其实的产品详细信息、定价动态和有价值的市场洞察的宝库。 然而,我们转向网络爬行来有效地利用这些巨大的信息财富。

这本综合指南是您掌握使用 JavaScript 与多功能工具相结合的电子商务网站网络爬行艺术的路线图。 Crawlbase 爬取 API。 当我们深入研究网络爬行的复杂性时,您将发现如何从这些动态的在线市场中导航和提取有价值的数据。 为了说明我们的方法,我们将使用 Daraz.pk(一个著名且广泛使用的电子商务平台)作为我们的主要示例。

通过以下部分,您将深入了解网络爬虫的基础知识以及构建自己的网络爬虫的实用见解。 在本指南结束时,您将能够有效地访问和分析电子商务数据,使您能够做出明智的业务决策并推动您的研究向前发展。 因此,让我们踏上网络爬行世界的旅程,解锁电子商务网站所提供的丰富信息。

目录

  1. 入门
  • 什么是电子商务网站
  • 网络爬行在电子商务中的作用
  1. Crawlbase 爬网 API 入门
  • Crawlbase 抓取 API 简介
  • 使用 Crawlbase 抓取 API 的好处
  • Crawlbase NodeJS 库
  1. 设置您的开发环境
  • 安装 NodeJS 和 NPM
  • 设置项目目录
  • 安装所需的库
  • 选择正确的开发 IDE
  • 获取 Crawlbase 爬行 API 的令牌
  1. 选择您的目标电子商务网站
  • 爬行 Daraz.pk 网站的重要性
  • 了解 Daraz.pk 网站的搜索页面结构
  1. 编写 JavaScript 爬行脚本
  • 导入必需的 NodeJS 模块
  • 配置您的 Crawlbase API 令牌
  • 识别重要信息的选择器
  • 抓取选定的电子商务网站
  • 爬取隐藏在分页中的产品
  1. 高效存储数据
  • 将抓取的数据下载为 CSV 文件
  • 集成SQLite数据库来保存数据
  1. 结论
  2. 常见问题解答

入门

在我们深入技术细节之前,了解电子商务网站的概念并阐明它们在数字时代的重要性非常重要。 通过探索网络爬行在电子商务中的作用,读者将了解数据提取、组织和利用如何对于在在线市场中获得竞争优势至关重要。

什么是电子商务网站?

电子商务网站是电子商务网站的简称,是一种通过互联网买卖产品或服务的在线平台。 这些网站的形式和规模各不相同,从小型独立精品店到大型跨国公司。 它们的统一之处在于其运营的数字化本质,允许客户通过网络的力量浏览产品、购买并安排送货。

网络爬行在电子商务中的作用

网络爬虫在电子商务生态系统中发挥着关键作用,充当驱动实时产品信息和市场数据可用性的无声引擎。 它的工作原理如下:网络爬虫,也称为网络蜘蛛或机器人,是系统地导航网站、收集数据的自动化脚本。 这些数据可以包含产品详细信息、定价信息、客户评论等。

网络爬行在电子商务中的作用

对于电商企业来说,网络爬虫是必不可少的。 它使他们能够通过监控自己及其竞争对手的产品价格来保持竞争力。 这种数据驱动的方法允许动态定价策略,确保产品实时定价具有竞争力。 此外,网络爬行有助于库存管理,确保产品有库存,并在客户想要购买时可供使用。

研究人员和分析师还依靠网络爬行​​进行市场研究和趋势分析。 通过汇总来自各个电子商务网站的数据,他们深入了解消费者行为、市场波动和特定产品的受欢迎程度。 这些信息对于做出明智的业务决策、预测市场趋势以及在竞争中保持领先地位非常宝贵。

Crawlbase 爬网 API 入门

既然我们已经确定了网络爬行在电子商务中的重要性,那么是时候深入研究使您能够有效爬行电子商务网站的工具和技术了。 在本节中,我们将向您介绍 Crawlbase 爬行 API,阐明利用其功能的好处,并探索 Crawlbase NodeJS 库,它将成为我们在网络爬行之旅中值得信赖的伴侣。

Crawlbase 抓取 API 简介

Crawlbase 爬行 API 是一个强大的、开发人员友好的解决方案,可简化网络爬行和抓取任务。 它提供了广泛的特性和功能,使其成为从 Amazon、eBay、Daraz.pk、阿里巴巴等电子商务网站提取数据的理想选择。

从本质上讲,Crawlbase 爬网 API 使您能够向目标网站发送 HTTP 请求、检索 HTML 内容并以编程方式浏览网页。 这意味着您可以访问网站的底层数据,而无需手动浏览、复制和粘贴。 相反,您可以自动化该过程,从而节省时间和精力。 您可以阅读更多内容 Crawlbase爬取API文档.

使用 Crawlbase 抓取 API 的好处

在开始网络爬行之旅时,为什么选择 Crawlbase 爬行 API? 以下是一些令人信服的理由:

  1. 数据准确性和一致性: Crawlbase 抓取 API 可确保您收集的数据准确且一致。 与容易出现错误和不一致的手动数据输入不同,API 直接从源获取数据,从而减少了不准确的可能性。
  2. 可扩展性: 无论您需要抓取几个页面还是数千个页面,Crawlbase 抓取 API 都能满足您的需求。 它具有高度可扩展性,适合各种规模的项目。
  3. 实时数据: 在快节奏的电子商务世界中,访问实时数据可以发挥重要作用。 API 提供最新信息,让您在竞争中保持领先地位。
  4. 代理管理: 在处理网站的反抓取防御(例如 IP 阻止)时,Crawlbase 提供了涉及 IP 轮换的高效代理管理系统。 此特殊功能有助于规避 IP 禁令并确保对所需数据的一致且可靠的访问。
  5. 方便: Crawlbase API 无需创建和管理您自己的自定义抓取工具或爬虫,从而带来轻松和方便的感觉。 它作为基于云的解决方案无缝运行,处理所有错综复杂的技术问题,让您能够专注于提取有价值的数据。
  6. 成本效益: 建立和维持内部网络抓取解决方案可能会严重限制您的预算。 相反,Crawlbase 抓取 API 提供了一种经济上合理的替代方案,您只需为您特别需要的服务付费,从而使您的费用与您的独特需求保持一致。

Crawlbase NodeJS 库

要充分利用 Crawlbase 爬网 API,您需要一种可以无缝交互的编程语言。 这就是 Crawlbase NodeJS 库 发挥作用。 NodeJS 是一种流行的运行时环境,用于在 Web 浏览器之外执行 JavaScript 代码,它是构建 Web 爬虫的绝佳选择。

Crawlbase NodeJS 库简化了将 Crawlbase 爬行 API 集成到 Web 爬行项目中的过程。 它提供的功能和实用程序使发送请求、处理响应和解析数据变得轻而易举。 无论您是经验丰富的开发人员还是刚刚开始网络爬虫,Crawlbase NodeJS 库都将是您构建强大而高效的网络爬虫的首选工具。

在以下部分中,我们将引导您设置开发环境、配置 Crawlbase 爬网 API 以及编写第一个 JavaScript 爬网脚本。 我们将一起探索电子商务领域网络爬行的不可思议的可能性。

设置您的开发环境

在您开始使用 JavaScript 和 Crawlbase Crawling API 进行网络爬行之前,必须准备好您的开发环境。 本节提供简洁而详细的指南,帮助您设置无缝电子商务网站爬行所需的工具和库。

安装 NodeJS 和 NPM

NodeJS 和 NPM(节点包管理器)是现代 JavaScript 开发的支柱。 它们允许您在 Web 浏览器的范围之外执行 JavaScript 代码并轻松管理依赖项。 这是一个简单的安装指南:

  1. NodeJS: 访问 NodeJS 官方网站并下载为您的操作系统量身定制的最新 LTS(长期支持)版本。 按照提供的特定于平台的说明执行安装。
  2. 新产品管理: NPM 与 NodeJS 捆绑在一起。 安装 NodeJS 后,您将自动拥有 NPM 供您使用。

要确认安装成功,请打开终端或命令提示符并运行以下命令:

1
2
节点版本
npm-版本

这些命令将显示已安装的 NodeJS 和 NPM 版本,确保安装顺利。

设置项目目录

首先,使用 mkdir 命令创建一个目录。 在本教程中,它被称为电子商务爬网,但您可以将名称替换为您选择的名称之一:

1
MKDIR 电子商务\爬行

接下来,使用 cd 命令切换到新创建的目录:

1
cd 电商\爬行/

使用 npm 命令将项目目录初始化为 npm 包:

1
npm初始化-y

该命令创建一个 package.json 文件,其中包含项目的重要元数据。 -y 选项指示 npm 接受所有默认值。

运行命令后,屏幕上将显示以下输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
写入/home/hassan/Desktop/ecommerce scraping/package.json:

{
“名称”: “电子商务爬行”,
“版”: “1.0.0”,
“说明”: "",
“主要”: “ index.js”,
“脚本”: {
“测试”: “回显\”错误:未指定测试\“ &&退出1”
},
“关键词”: [],
“作者”: "",
“执照”: “走”
}

安装所需的库

为了熟练地进行网络爬行和 API 交互,请使用 NPM 为您的项目配备以下 JavaScript 库:

1
2
3
4
5
# 导航到您的项目目录
cd 你的项目目录

# 安装所需的库
npm 安装cheeriocrawlbasesqlite3csv-writer

以下是这些重要库的简要概述:

  • 干杯: 作为一个敏捷且高性能的库,Cheerio 旨在高效解析 HTML 和 XML 文档。 它在轻松地从网页中提取有价值的数据方面发挥着关键作用。
  • 爬行基地: Crawlbase 简化了与 Crawlbase Crawling API 的交互,简化了网站爬行和数据提取的过程。
  • SQLite3: SQLite3 是一个独立、无服务器、零配置的 SQL 数据库引擎。 它将作为您的存储库,用于存储爬行过程中收集的大量数据。
  • csv-作者: 它简化了将数据写入 CSV 文件的过程,使您可以轻松创建结构化数据文件以在应用程序中存储或进一步分析。 它提供了一个直观的 API,用于使用最少的代码定义标头并将记录写入 CSV 文件。

选择正确的开发 IDE

选择正确的集成开发环境 (IDE) 可以显着提高生产力。 虽然您可以在简单的文本编辑器中编写 JavaScript 代码,但使用专用 IDE 可以提供代码完成、调试工具和版本控制集成等功能。

用于 JavaScript 开发的一些流行 IDE 包括:

  • Visual Studio 代码(VS 代码): VS Code 是 Microsoft 开发的免费开源代码编辑器。 它拥有一个充满活力的社区,为 JavaScript 开发提供了广泛的扩展。
  • 网络风暴: WebStorm 是 JetBrains 的一款商业 IDE,以其智能编码帮助和强大的 JavaScript 支持而闻名。
  • 崇高文字: Sublime Text 是一款轻量级、可自定义的文本编辑器,因其速度和可扩展性而受到开发人员的欢迎。

选择适合您的偏好和工作流程的 IDE。

获取 Crawlbase 爬网 API 的令牌

要访问 Crawlbase 爬网 API,您需要访问令牌。 要获取令牌,您首先需要在 Crawlbase 上创建一个帐户。 现在,让我们为您设置一个 Crawlbase 帐户。 按着这些次序:

  1. 访问 Crawlbase 网站: 打开网络浏览器并导航至 Crawlbase 注册页面以开始注册过程。
  2. 提供您的详细信息: 系统会要求您提供电子邮件地址并为您的 Crawlbase 帐户创建密码。 填写所需信息。
  3. 验证: 提交详细信息后,您可能需要验证您的电子邮件地址。 检查您的收件箱中是否有来自 Crawlbase 的验证电子邮件,然后按照提供的说明进行操作。
  4. 登录: 验证您的帐户后,返回 Crawlbase 网站并使用您新创建的凭据登录。
  5. 访问您的 API 令牌: 您需要 API 令牌才能使用爬网 API。 您可以在此链接上找到您的代币。

Crawlbase 提供两种类型的令牌:用于静态网站页面的普通令牌 (TCP) 和用于动态或 JavaScript 呈现的网站页面的 JavaScript 令牌 (JS)。 你可以在这里阅读更多。

准备好 NodeJS、NPM、基本库和 API 令牌后,您现在就可以开始使用 JavaScript 和 Crawlbase 爬行 API 进入电子商务网站爬行的世界了。 在以下部分中,我们将逐步指导您完成该过程。

选择您的目标电子商务网站

为您的爬行项目选择正确的电子商务网站是一个至关重要的决定。 在本节中,我们将探讨选择 Daraz.pk 作为目标网站的意义,并深入了解其搜索页面结构。

爬行 Daraz.pk 网站的重要性

Daraz.pk 是南亚最大的在线市场之一,是我们网络爬行演示的绝佳选择。 原因如下:

  1. 数据丰富: Daraz.pk 拥有广泛的产品目录,使其成为数据爱好者的信息宝库。 从电子产品到时尚,您会发现各种各样的产品可供探索,并提供了抓取电子商务数据的全面示例。
  2. 现实世界的相关性: 爬取像 Daraz.pk 这样的电子商务巨头提供了一个与现实世界场景产生共鸣的实际示例。 无论您是希望监控竞争对手价格的企业、研究消费者趋势的研究人员,还是寻求创建价格比较工具的开发人员,您可以从此类平台提取的数据都是非常宝贵的。
  3. 不同的页面结构: Daraz.pk 的网站具有多种页面结构,包括产品列表、搜索结果和单个产品页面。 这种多样性使我们能够涵盖广泛的网络抓取场景,使其成为学习和实际应用的理想场所。
  4. 区域意义: Daraz.pk 在南亚的存在赋予其区域重要性。 如果您对区域市场趋势感兴趣,了解该区域特定的产品和定价可能非常有益。

了解 Daraz.pk 网站的搜索页面结构

为了有效地抓取Daraz.pk,必须掌握其搜索页面的结构。 这些页面是许多与电子商务相关的查询的起点,使它们成为网络爬行的主要焦点。 Daraz.pk 通常每页显示 40 个结果。

达拉兹搜索页面

以下是详细的细分:

  1. 搜索栏: Daraz.pk 的主页有一个显着的搜索栏,用户可以在其中输入关键字来查找产品。 该搜索栏是客户搜索特定商品的入口点,使其成为理解的重要组成部分。
  2. 搜索结果: 输入搜索查询后,Daraz.pk 会显示相关产品的列表。 每个产品列表通常包括图像、标题、价格和用户评级。 了解这些数据的结构对于有效提取数据至关重要。
  3. 产品页面: 单击搜索结果中的产品将进入单独的产品页面。 这些页面包含有关特定产品的详细信息,包括其描述、规格、客户评论和相关项目。 了解这些页面的结构对于更深入的数据提取至关重要。
  4. 分页: 鉴于潜在的大量搜索结果,分页在这些页面上很常见。 用户可以导航多个结果页面来探索更广泛的产品。 处理分页是网络爬行的关键,尤其是在数据可以跨越多个页面的电子商务网站上。
  5. 页脚: Daraz.pk 搜索页面的页脚通常包含有用的链接和信息。 虽然与搜索结果没有直接关系,但它可以成为提取附加数据或有效浏览网站的宝贵资源。

值得注意的是,Daraz.pk 使用 JavaScript 动态加载搜索结果。 要有效地抓取此类页面,您需要将 Crawlbase 抓取 API 与 JavaScript 令牌(JS 令牌)结合使用。 使用 JS 令牌,您可以使用查询参数,例如 ajaxWaitpageWait,这对于处理 JavaScript 渲染和 AJAX 加载至关重要。 您可以阅读更多内容 Crawlbase爬取API查询参数。 此功能允许您与动态生成的内容进行交互,确保您可以访问网络爬行项目所需的数据。

在处理像 Daraz.pk 这样的现代交互式网站时,了解 JavaScript 渲染和 AJAX 加载的动态至关重要。 通过研究搜索页面结构,您将做好充分准备,从 Daraz.pk 中提取有价值的数据,并深入了解电子商务网络抓取。

编写 JavaScript 爬行脚本

让我们探索如何使用 Crawlbase NodeJS 库为 Daraz.pk 编写 JavaScript 爬行脚本。 本节将通过代码示例详细介绍每个步骤。

导入必需的 NodeJS 模块

NodeJS 以其全面的模块生态系统在网络爬行和抓取领域大放异彩。 这些模块简化了复杂的任务,使从网页中提取和操作数据变得更加容易。 让我们首先导入必要的模块:

1
2
3
4
5
// 导入必要的 Node.js 模块
常量 { 抓取API } = 要求('crawlbase'); // 用于发出 HTTP 请求
常量 欢呼= 要求('cheerio'); // 用于解析 HTML
常量 sqlite3= 要求('sqlite3').详细(); // 用于使用 SQLite 数据库
常量 创建CsvWriter = 要求('csv-writer').创建ObjectCsvWriter; // 用于处理 CSV 文件

配置您的 Crawlbase API 令牌

现在,让我们配置您的爬网 API 令牌。 此令牌是使用 Crawlbase 抓取 API 的网关。

1
2
常量 抓取基础ApiToken = 'YOUR_CRAWLBASE_JS_TOKEN'; // 替换为您实际的 Crawlbase API 令牌
常量 接口= 抓取API({ 象征:crawlbaseApiToken });

通过在此处插入您独特的 API 令牌,您的脚本将能够在整个爬行过程中无缝地利用 Crawlbase 爬行 API 服务。 使用带有 JS 令牌的爬行 API 不仅为我们提供了有效导航 JavaScript 渲染网站的基本功能,而且还保证了无缝 IP 轮换,从而防止潜在的阻塞问题。

识别重要信息的选择器

在抓取像 Daraz.pk 这样的电子商务网站时,基本步骤之一是识别包含要提取的信息的精确 HTML 元素。 在本节中,我们将指导您通过检查网页并选择与 Cheerio 一起使用的正确 CSS 选择器来查找这些元素。

  1. 检查网页:

在精确定位选择器之前,您需要检查 Daraz.pk 搜索页面。 右键单击您感兴趣的元素(例如产品标题、价格或评级),然后从上下文菜单中选择“检查”。 这将打开浏览器的开发人员工具,允许您探索页面的 HTML 结构。

Daraz 搜索页面检查
  1. 找到相关元素:

在开发人员工具中,您将看到页面的 HTML 结构。 首先识别封装要抓取的数据的 HTML 元素。 例如,产品标题可能包含在 <h2> 标签,而价格可能在 <span> 具有特定类的元素。

  1. 确定 CSS 选择器:

找到相关元素后,就可以创建准确定位它们的 CSS 选择器了。 CSS 选择器是用于根据元素的属性、类或 HTML 结构中的层次结构选择所需元素的模式。

以下是一些常见的 CSS 选择器:

  • 元素选择器: 直接选择 HTML 元素。 例如, h2 全选 <h2> 元素。
  • 类别选择器: 按元素的类属性选择元素。 例如, .product-title 选择类为“product-title”的所有元素。
  • ID选择器: 通过 ID 属性选择唯一元素。 例如, #product-123 选择 ID 为“product-123”的元素。
  1. 测试选择器:

定义选择器后,您可以在浏览器的开发人员控制台中测试它们,以确保它们定位正确的元素。 使用 JavaScript 执行选择器并查看它们是否返回预期结果。 在以下部分中,我们在撰写此博客时使用了最新的 CSS 选择器,以确保我们演示的准确性和有效性。

抓取选定的电子商务网站

在本节中,我们将深入探讨如何使用之前的设置抓取 Daraz 电子商务网站的实际示例。 提供的示例演示了如何从 Daraz.pk 获取查询“watches for men”的搜索结果并提取基本产品信息。

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
46
47
48
49
50
51
52
53
54
55
// 导入必要的 Node.js 模块
常量 { 抓取API } = 要求('crawlbase');
常量 欢呼= 要求('cheerio');
常量 sqlite3= 要求('sqlite3').详细();
常量 创建CsvWriter = 要求('csv-writer').创建ObjectCsvWriter;

// 替换为您实际的 Crawlbase API 令牌
常量 抓取基础ApiToken = 'YOUR_CRAWLBASE_JS_TOKEN';
常量 接口= 抓取API({ 象征:crawlbaseApiToken });

异步 功能 爬行达拉兹(询问){
尝试 {
// 定义在 Daraz.pk 上搜索的 URL
常量 搜索网址 = `https://www.daraz.pk/catalog/?q=${查询}`;

// 使用 Crawlbase API 向搜索 URL 发出 GET 请求
常量 响应 = 等待 蜜蜂。得到(搜索网址,{ 页面等待: 5000 });

// 检查请求是否成功
if (回复。状态码 === 200){
// 使用Cheerio解析页面的HTML内容
常量 $ = 快乐。加载(回复。身体);

// 提取并处理搜索结果
常量 结果=[];

// 提取产品数据
$('div[data-qa-locator="general-products"] div[data-qa-locator="product-item"]').((索引、元素) => {
常量 产品={};

的产品。产品页面网址 = $(元素).发现('.mainPic--ehOdr a').属性('href');
的产品。缩略图 = $(元素).发现('.mainPic--ehOdr img').属性('源代码');
的产品。标题 = $(元素).发现('.info--ifj7U .title--wFj93 a').文本();
的产品。车资 = $(元素).发现('.info--ifj7U .price--NVB62 跨度').文本();
的产品。评论数 = $(元素).发现('.info--ifj7U .rateAndLoc--XWchq . rating__review--ygkUy').文本();
的产品。圖書分館的位置 = $(元素).发现('.info--ifj7U .rateAndLoc--XWchq .location--eh0Ro').文本();

结果。(产品);
});

回报 结果;
} 其他 {
领事.错误(“检索页面失败。”);
}
} 捕捉 (错误) {
领事.错误(“发生错误:”, 错误);
}
}

异步 功能 开始爬行(){
常量 结果= 等待 爬行达拉兹(“男士手表”);
领事.日志(结果);
}

开始爬行();

crawlDaraz 函数启动爬行过程。 它首先根据提供的查询构造 Daraz.pk 搜索的 URL。 然后,它利用 Crawlbase API 向此 URL 发送 GET 请求,并结合 5000 毫秒(5 秒)的页面等待时间来确保 JavaScript 渲染完成。 如果请求成功(HTTP 状态代码 200),脚本将使用“cheerio”解析页面的 HTML 内容。 然后,它通过使用预定义选择器遍历 HTML 结构来提取产品信息。 提取的数据(包括产品 URL、图像、标题、价格、评论计数和位置)被组织成对象并添加到数组中。 最后返回这个产品数据数组。

代码的第二部分调用startCrawling函数,该函数通过调用来启动爬取过程 crawlDaraz 查询“男士手表”。 提取的结果将记录到控制台,以便进一步处理或分析。 此代码展示了网络爬行和抓取的技术实现,该实现能够使用 Crawlbase 爬行 API 处理 Daraz.pk 网站上的动态内容加载。

输出截图:

已爬网的 Daraz 搜索结果

抓取隐藏在分页中的产品

在抓取像 Daraz.pk 这样的电子商务网站时,由于产品数量较多,经常会遇到搜索结果页面分布在多个页面上的情况。 为了确保全面的数据收集,我们需要有效地处理这种分页。

分页通过数字页面链接或“下一页”按钮进行管理。 我们的解决方法如下:

  1. 确定总页数: 最初,我们获取第一个搜索页面并检查它以确定可用结果页面的总数。 这一步对于了解我们需要抓取多少页面至关重要。
  2. 遍历页面: 掌握了总页面数后,我们将迭代每个页面,发出获取产品数据的请求。 我们通过将页码附加到搜索 URL 来遵循分页结构。 例如,从第 1 页到第 N 页,其中 N 是总页数。
  3. 提取数据: 我们像在初始页面上一样提取每个页面上的产品数据。 这包括产品 URL、图像、标题、价格、评论和位置等详细信息。
  4. 汇总结果: 最后,我们将每个页面的结果聚合到一个数据集中。 这确保我们从搜索结果的每一页捕获数据,提供全面的数据集进行分析。

让我们更新之前的代码来处理 Daraz.pk 搜索页面上的分页。

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
// 导入必要的 Node.js 模块
常量 { 抓取API } = 要求('crawlbase');
常量 欢呼= 要求('cheerio');
常量 sqlite3= 要求('sqlite3').详细();
常量 创建CsvWriter = 要求('csv-writer').创建ObjectCsvWriter;

// 替换为您实际的 Crawlbase API 令牌
常量 抓取基础ApiToken = 'YOUR_CRAWLBASE_JS_TOKEN';
常量 接口= 抓取API({ 象征:crawlbaseApiToken });

异步 功能 获取总页数(询问){
尝试 {
// 定义在 Daraz.pk 上搜索的 URL
常量 搜索网址 = `https://www.daraz.pk/catalog/?q=${查询}`;

// 使用 Crawlbase API 向搜索 URL 发出 GET 请求
常量 响应 = 等待 蜜蜂。得到(搜索网址,{ 页面等待: 5000 });

// 检查请求是否成功
if (回复。状态码 === 200){
// 使用Cheerio解析页面的HTML内容
常量 $ = 快乐。加载(回复。身体);

// 判断总页数
常量 总页数 = 解析整数($('ul.ant-pagination li:nth-last-child(2)').属性('标题'));
回报 总页数;
} 其他 {
领事.错误(“检索页面失败。”);
回报 0;
}
} 捕捉 (错误) {
领事.错误(“发生错误:”, 错误);
回报 0;
}
}

异步 功能 抓取DarazPage(查询、页面){
尝试 {
// 定义特定页面的 URL
常量 搜索网址 = `https://www.daraz.pk/catalog/?q=${查询}&页面=${页}`;

// 使用 Crawlbase API 向页面 URL 发出 GET 请求
常量 响应 = 等待 蜜蜂。得到(搜索网址,{ 页面等待: 5000 });

// 检查请求是否成功
if (回复。状态码 === 200){
// 使用Cheerio解析页面的HTML内容
常量 $ = 快乐。加载(回复。身体);

// 提取并处理本页的搜索结果
常量 结果=[];

// 从该页面提取产品数据
$('div[data-qa-locator="general-products"] div[data-qa-locator="product-item"]').((索引、元素) => {
常量 产品={};

的产品。产品页面网址 = $(元素).发现('.mainPic--ehOdr a').属性('href');
的产品。缩略图 = $(元素).发现('.mainPic--ehOdr img').属性('源代码');
的产品。标题 = $(元素).发现('.info--ifj7U .title--wFj93 a').文本();
的产品。车资 = $(元素).发现('.info--ifj7U .price--NVB62 跨度').文本();
的产品。评论数 = $(元素).发现('.info--ifj7U .rateAndLoc--XWchq . rating__review--ygkUy').文本();
的产品。圖書分館的位置 = $(元素).发现('.info--ifj7U .rateAndLoc--XWchq .location--eh0Ro').文本();

结果。(产品);
});

回报 结果;
} 其他 {
领事.错误(`检索页面失败 ${页}.`);
回报 [];
}
} 捕捉 (错误) {
领事.错误(“发生错误:”, 错误);
回报 [];
}
}

异步 功能 开始爬行(){
常量 查询 = “男士手表”;
常量 总页数 = 等待 获取总页数(询问);

if (总页数> 0){
常量 结果=[];

// 抓取所有可用页面
( 页 = 1; 页数 <= 总页数; 页++) {
常量 页面结果= 等待 抓取DarazPage(查询、页面);
结果。(...页面结果);
}
// 打印数据集长度
领事.日志(结果。长度);
}
}

开始爬行();

该代码由两个主要函数组成: getTotalPagescrawlDarazPage.

  • getTotalPages 获取初始搜索页面,提取可用于给定查询的页面总数,并返回该数字。 它使用 Cheerio 解析页面并从分页控件中提取总页数。
  • crawlDarazPage 负责抓取搜索结果的特定页面。 它需要 querypage 作为参数,构造特定页面的 URL,并从该页面提取产品数据。

startCrawling 函数,我们使用以下方法确定总页数 getTotalPages。 如果有页面要抓取(即 totalPages 大于零),我们初始化一个空的 results 大批。 然后我们循环遍历所需的页数(在本例中为前 5 页)并使用 crawlDarazPage 从每个页面获取并提取产品数据。 结果累积在 results 数组。

通过以这种方式处理分页,您可以确保您的网络爬虫从 Daraz.pk 或类似网站上的所有可用搜索结果页面全面收集产品数据。 这种方法使您的网络抓取工作更加彻底和有效。

高效存储数据

从 Daraz 这样的电子商务网站成功抓取数据后,下一步就是有效地存储这些有价值的信息。 正确的数据存储可确保您可以有效地访问和利用抓取的数据用于各种目的。 本节将探讨两种存储抓取数据的方法:将其下载为 CSV 文件并集成 SQLite 数据库来保存数据。

将抓取的数据下载为 CSV 文件

CSV(逗号分隔值)是一种广泛使用的存储结构化数据的格式。 它易于使用,并且可以通过 Microsoft Excel 和 Google Sheets 等各种电子表格应用程序打开。 要将抓取的数据下载为 NodeJS 应用程序中的 CSV 文件,您可以使用类似的库 csv-writer。 以下是如何根据我们的示例使用它的示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
常量 创建CsvWriter = 要求('csv-writer').创建ObjectCsvWriter;

// 创建一个 CSV 写入器
常量 csvWriter = 创建CsvWriter({
: 'daraz_products.csv', //指定文件路径
[
{ id: '产品页面网址', 标题: '产品页面网址' },
{ id: '缩略图', 标题: '缩略图 URL' },
{ id: '标题', 标题: '标题' },
{ id: '价格', 标题: '价格' },
{ id: “没有评论”, 标题: “评论数量” },
{ id: '地点', 标题: '地点' },
],
});

// 将数据写入CSV文件
异步 功能 保存为CSV(data){
等待 csvWriter。写记录(数据);
}

在此示例中,我们创建了一个 CSV 编写器,其标题与我们抓取的字段相对应:“productPageUrl”、“thumbnailImage”、“title”、“price”、“noOfReviews”和“location”。 然后您可以使用 saveToCsv 功能将您的数据保存为 CSV 文件。

集成SQLite数据库来保存数据

SQLite 是一种轻量级、无服务器且独立的 SQL 数据库引擎,非常适合嵌入到应用程序中。 它提供了一种存储结构化数据的可靠方法。 要将 SQLite 数据库集成到您的网络抓取应用程序中以进行数据存储,您可以使用 sqlite3 图书馆。 下面是我们如何根据示例使用它:

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
46
47
常量 sqlite3= 要求('sqlite3').详细();

// 打开一个SQLite数据库
常量 分贝= sqlite3。数据库('daraz_products.db'); //指定数据库文件

// 创建一个表来存储数据
D b。连载(() => {
D b。运行(`
如果不存在则创建表产品 (
id 整数主键自动增量,
产品页面网址文本,
缩略图图像文本,
标题文本,
价格文本,
没有评论文本,
位置文本
)
`);
});

// 将数据保存到数据库的函数
异步 功能 保存到数据库(data){
(常量 产品展示 of 数据) {
D b。运行(
`
插入产品(productPageUrl、thumbnailImage、标题、价格、评论数、位置)
值 (?, ?, ?, ?, ?, ?)
`,
[
的产品。产品页面网址,
的产品。缩略图,
的产品。标题,
的产品。车资,
的产品。评论数,
的产品。圖書分館的位置,
],
(犯错) => {
if (呃) {
领事.错误(“插入数据时出错:”, 呃);
}
},
);
}
}

// 关闭数据库连接
D b。关闭();

在此示例中,我们首先打开一个 SQLite 数据库并创建一个名为 products 的表来存储抓取的数据。 然后我们定义一个函数 saveToDatabase 将数据插入到该表中。 插入数据后,记得关闭数据库连接 db.close().

此外,这里有一个示例,说明如何将这些数据存储方法合并到您的网络抓取代码中:

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
// ...(之前的网页抓取代码包括用于保存抓取数据的新函数)

异步 功能 开始爬行(){
常量 查询 = “男士手表”;
常量 总页数 = 等待 获取总页数(询问);

if (总页数> 0){
常量 结果=[];

// 抓取所有可用页面
( 页 = 1; 页数 <= 总页数; 页++) {
常量 页面结果= 等待 抓取DarazPage(查询、页面);
结果。(...页面结果);

// 将数据保存到CSV文件和SQLite数据库
等待 保存为CSV(页面结果);
等待 保存到数据库(页面结果);
}
// 关闭数据库连接
D b。关闭();
// 打印数据集长度
领事.日志(结果。长度);
}
}

开始爬行();

在此更新的代码中, saveToCsv 调用函数将数据保存到 CSV 文件,并且 saveToDatabase 在抓取每个页面后,调用函数将数据存储在 SQLite 数据库中。 这可确保您的数据在抓取过程中得到有效保存。

结论

网络爬虫是数字时代的幕后英雄,在蓬勃发展的电子商务世界中发挥着不可或缺的作用。 在电子商务世界中,网络爬行就像一个沉默的哨兵,不知疲倦地收集丰富的数据,为这个数字市场提供动力。 亚马逊、eBay、Daraz.pk 等电子商务网站彻底改变了我们的购物方式,为我们提供触手可及的大量产品和服务。 这些平台的成功部分归功于网络爬行,网络爬行在确保产品信息、价格和趋势保持最新方面发挥着关键作用。

网络爬行在电子商务中的重要性怎么强调都不为过。 它为企业提供实时价格监控、竞争分析和库存管理。 研究人员可以从进行市场研究和深入了解消费者行为中受益。 借助 Crawlbase Crawling API 和 NodeJS 等合适的工具,开发人员可以制作强大的网络爬虫来提取有价值的数据并构建创新的解决方案。

在阅读本指南时,我们探讨了选择目标电子商务网站的重要性,深入研究了 Daraz.pk 搜索页面的结构。 借助由 Crawlbase 爬行 API 和数据管理策略提供支持的 JavaScript 爬行脚本,您现在可以导航电子商务领域并释放其财富。 网络爬行是您通往电子商务智能世界的门户,数据驱动的决策和创新等待着您。

常见问题解答

问:网络爬行和网络抓取有什么区别?

网络爬行 是系统地浏览网站并从多个页面收集数据的过程。 它涉及自动脚本,称为网络爬虫或蜘蛛,跟踪链接并索引网页。
另一方面, 网页抓取 就是从网页中提取特定的数据。 它通常针对特定元素,例如产品价格、名称或评论。 网页抓取通常是一种网页爬行组件,可以从爬行的页面中提取有价值的信息。

问:为什么网络爬行对于 Daraz.pk 等电子商务网站很重要?

网络爬行对于 Daraz.pk 等电子商务网站至关重要,因为它使它们能够监控价格、跟踪产品可用性并收集市场数据。 这些信息对于竞争性定价策略、库存管理和趋势分析至关重要。 它还可以帮助企业及时了解不断变化的市场状况。

问:如何开始使用 Crawlbase Crawling API 和 NodeJS 进行网络爬行?

要开始使用 Crawlbase 和 NodeJS 进行网络爬行,请按照下列步骤操作:

  1. 注册 Crawlbase 帐户并获取 API 令牌。
  2. 使用 NodeJS 和必要的库(例如 Cheerio 和 SQLite3)设置您的开发环境。
  3. 编写一个 JavaScript 爬网脚本,使用 Crawlbase Crawling API 来获取网页、使用 Cheerio 提取数据并处理分页。
  4. 将抓取的数据高效存储为 CSV 文件或 SQLite 数据库。

问:使用 Crawlbase 爬网 API 有哪些好处?

Crawlbase 爬网 API 具有多项优势,包括:

数据准确性和一致性: 它确保数据收集的准确性和一致性。
可扩展性: 它可以处理各种规模的项目,从小型爬行到大规模操作。
实时数据: 它提供对电子商务至关重要的最新信息的访问。
代理管理: 它有效地处理代理和 IP 轮换以规避反抓取防御。
方便: 它消除了构建定制刮刀并处理技术复杂性的需要。
成本效益: 它为内部抓取解决方案提供了一种经济实惠的替代方案,并采用即用即付的定价方式。