npm 包 node-iceberg 使用教程

阅读时长 8 分钟读完

简介

node-iceberg 是一个基于 Node.js 的电商数据爬虫框架,它具有高度的可扩展性和配置性,可以实现针对不同电商平台的数据抓取,如淘宝、京东、天猫等。

该框架提供了多种抓取数据的方式,如基于页面解析、API 抓取、代理 IP 抓取等,同时还支持自定义扩展,可以灵活适应各种抓取场景。

本文将详细介绍 node-iceberg 的使用方法,通过学习本文,你可以了解如何使用该框架进行电商数据爬取。

安装

node-iceberg 是一个 npm 包,可以通过以下命令进行安装:

同时,建议在安装时进行全局安装,以便在任何文件夹中使用 node-iceberg 命令:

基本使用

初始化项目

使用 node-iceberg 创建一个新项目非常简单,可以通过以下命令创建:

该命令会在当前目录下创建名为 project-name 的文件夹,该文件夹包含一个简单的项目模板,其中 index.js 是项目的入口文件。

配置文件

node-iceberg 的配置文件名为 iceberg.js,该文件包含配置信息和爬虫脚本的执行流程。

以下是一个 iceberg.js 的示例内容:

-- -------------------- ---- -------
-------------- - -
  -- ---------
  ------ -------------
  -- ------
  ------ -
    -
      -- ----
      ----- ---------
      -- ------- ---
      ---- -----------------------
      -- ------
      ------- -
        ----- ---------- -- -----
        -- --------- ------- ---
        ------- -
          -- ------ --- ---
          ----- ----------------
          -- ------ --- ---
          ------- -
            ------ -----------------
            ------ -----------------
            -- ---
          -
        -
      -
    -
  -
--

该配置内容中包含一个 tasks 数组,数组中包含多个任务,每个任务对应一个数据抓取流程。任务包含三个属性:

  • name:任务名称,方便进行任务的管理和区分。

  • url:需要抓取的数据页面 URL。

  • parser:页面解析方式,指定数据如何从页面中进行解析。解析方式包含两个属性:

    • type:解析器类型,目前支持 cheerio 和 puppeteer 两种方式,分别使用 cheerio 和 puppeteer 进行解析。

    • config:解析器配置,具体参考官方文档。

除了任务配置,iceberg.js 中还包括了一些通用配置,如 entry,表示爬虫脚本的入口文件。

执行任务

完成配置后,运行以下命令启动任务:

其中,task-name 为在 iceberg.js 中指定的任务名称。

该命令会开始执行指定任务,获取数据并输出到控制台。

打包发布

完成爬虫脚本的开发后,可以通过以下命令进行打包:

该命令会将项目打包成一个 JavaScript 文件并进行压缩,可以通过以下命令运行打包后的文件:

其中,path-to-output 为打包后的 JavaScript 文件路径。

自定义扩展

node-iceberg 提供了丰富的自定义扩展接口,可以通过自定义插件进行功能扩展。

扩展接口包括以下几个部分:

自定义解析器

上述配置示例中,使用了 cheerio 和 puppeteer 两种解析器进行页面解析,例如以下格式为 cheerio 解析器的配置:

如果需要自定义解析器,可以通过 extendsParser 方法进行扩展。以下示例为自定义解析器的实现:

-- -------------------- ---- -------
----- - ------------- - - ------------------------

----- -------- -
  ------------------- -
    ----------- - -------
  -

  ----- ------------------- -
    -- ----------
    ------ ---
  -

  ----- --------------------- -
    -- ----------
    ------ ---
  -
-

-------------- - ------------------------

在上述示例中,定义了一个名为 MyParser 的类,该类实现了两个方法 parseListPage 和 parseDetailPage,用于自定义列表页和详情页的解析逻辑。

自定义插件

除了自定义解析器外,还可以通过自定义插件来扩展功能。

node-iceberg 的插件机制非常灵活,只需要实现对应的挂载方法,就可以完成对框架事件的响应。以下是一个自定义插件的示例实现:

-- -------------------- ---- -------
-------------- - ----- -------- -
  ----- --------------- -
    -- -- ------- --
    ----------------------------------------- ----- ------ ----- -- -
      -------------------- ----- ---------------
      -- -----------
      ----- ----------------
    ---
  -
--

在上述示例中,定义了一个名为 MyPlugin 的类,该类实现了一个 apply 方法,该方法接收一个 compiler 对象,并挂载了一个在 ice-run 事件中响应的方法。

在该方法中,会输出正在执行的任务名称,并在任务开始执行前进行一些操作。可以根据业务需求,在不同的任务执行事件中注册响应方法并进行自定义操作。

示例代码

以下是一个示例代码,用于获取某电商平台上的商品信息:

-- -------------------- ---- -------
----- - -------- ----- ------ - - -----------------------

-- ------ ---- -----------
----- ---- -
  ------------------ ------ -
    ---------- - ------
    ---------- - ------
  -
-

-- ----------
----- -------- -
  ------------------- -
    ----------- - -------
  -

  ----- ------------------- -
    ----- ---- - ----- -------------------------
    ----- ----- - ----- --------------
    ----- ---- - ----- -------------------------- -- --------------- - -- ----------
    ------ -----
  -

  ----- --------------------- -
    ----- ----- - ----- ------------------------------------ -- -- --------------
    ----- ----- - ----- ------------------------------------ -- -- --------------
    ------ --- ----------- -------
  -
-

-- ---- ------- --
----- ------- - --- ---------
  ------ -
    -
      ----- --------
      ---- ----------------------------
      ------- -
        ----- ---------
        ------- -
          ----- --------------
          ------- -
            ------ --------------
            ------ --------------
          -
        -
      -
    -
  --
  ------ ----------
---

-- --------
------------------------------ ----------

-- ------
--------------------- ----- ------ ----- -- -
  ----- ----- - ---
  --- ------ --- -- ----- -
    ----- ---------------
    ----- ---- - ----- -----------------------
    -----------------
  -
  -------------------
---

-- ----
---------------------

在上述示例代码中,我们使用了 MyParser 类自定义了一个解析器,并在 Iceberg 实例中注册了该解析器。

随后,我们编写了一个任务脚本,该脚本会依次遍历商品列表中的每个商品详情页,并将商品信息存储到一个数组中并输出到控制台。

通过以上示例,可以清晰地了解到 node-iceberg 的基本使用和自定义扩展方法,让我们能够更加灵活地适应不同的爬取场景。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005673181e8991b448e3b4c

纠错
反馈