npm 包 js-crawler 使用教程

阅读时长 7 分钟读完

前言

在前端开发中,信息爬取是很常见的需求。但如何进行爬取呢?使用 JS-crawler 这个 npm 包可以帮助我们轻松地实现爬取操作。本文将对 JS-crawler 进行详细的使用教程。

什么是npm包?

在介绍 JS-crawler 这个 npm 包之前,首先需要了解什么是 npm 包。npm (Node Package Manager),全称Node包管理器,是一个基于Node.js的包管理工具。npm 可以方便地查找、安装和管理 Node.js 模块(也称为包)。

使用 npm 包可以大大提高我们的工作效率,省去了重复造轮子的时间。

什么是 JS-crawler?

JS-crawler 是一个 Node.js 爬虫模块,主要用于从网站和 DOM 中提取信息。

JS-crawler 可以用于自动抓取文本,链接、图片等。同时,支持异步回调,可进行更为复杂的爬取操作。

安装 JS-crawler

在使用 JS-crawler 之前,需要先安装它。使用 npm 命令进行安装:

然后,就可以在项目中使用 JS-crawler 了。

使用JS-crawler

初始化JS-crawler

使用JS-crawler最基本的方式是初始化一个crawler对象,这可以通过require('js-crawler')来实现。

简单的JS-crawler示例

下面是一个简单的使用JS-crawler的例子。这个爬虫会访问URL:http://example.com,并抓取所有的文本,链接以及图片链接。

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

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

以上代码中,crawl方法接受两个参数。第一个参数是需访问的URL,第二个参数是一个成功时的回调函数。回调函数可以进行更为进一步的操作,例如:提取网页内容,保存到数据库中等。

配置选项

JS-crawler 提供了许多配置选项,以便我们更灵活地使用。

  • ignoreRelative:默认情况下,爬虫将爬行相对URL,可以将它设置为true进行更复杂的爬虫操作。
  • **depth:**指定爬取的深度。深度是指页面的链接是否需要爬取。例如,如果深度为1,则只会爬取页面的链接,而不会深入进入重新爬取链接的页面。默认情况下,深度为1,但是可以设置最大深度(最大深度为5)。
  • **maxConcurrency:**用于控制并发请求的数目,以避免服务器过载。默认值为10。
  • **interval:**爬取请求之间的间隔(毫秒)。默认值为0。
  • **timeout:**超时时间(毫秒)。默认值为30000。
  • **retryCount:**重试次数。如果请求发生错误,请求将重试此次数。默认值为3。
  • **userAgent:**HTTP User-Agent Header。使用默认值或填写自己的 User-Agent Header。
  • **robotstxt:**指定是否应解析 robots.txt 文件。支持为 true 或 false。默认为 true。
  • **allowDuplicates:**指定是否应抓取重复链接。如果设置为false,则不会抓取任何已访问过的链接。

当然,你也可以设置多个配置项。例如:

请求返回的数据

当页面成功请求时,JS-crawler 会返回一些有用的数据。以下是 JS-crawler 可以提供的数据:

  • **page.url:**请求的URL
  • **page.status:**HTTP 状态码。
  • **page.content:**抓取到的HTML内容。
  • **page.links:**包含所有链接和特定链接的数组。
  • **page.images:**包含所有图像和特定图像的数组。
  • **page.assets:**包含所有非链接/图像的属性。
  • **page.error:**如果发生任何错误,例如网络错误,则设置为true。
  • **page.elapsedTime:**耗时(毫秒)。

示例代码

下面是一个完整的 JS-crawler 示例代码,它会爬取 Zhihu 热榜前 5 的问题和答案。

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

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

代码分析:

首先,我们引入 JS-crawlercheerio 这两个 npm 包。其中 cheerio 主要用于解析 HTML 字符串,使我们能够像 jQuery 一样操作所选元素。

然后使用 new Crawler() 创建一个新的爬虫。使用 configure 方法配置选项。

在调用 crawl 方法时,我们指定了爬取的网址和成功时的回调函数。在此回调函数中,我们使用 cheerio 将 HTML 字符串解析为可操作的 DOM 元素,然后通过选择器获取所需的元素。最后,输出前五个问题和答案。

通过这个例子可以看到,使用 JS-crawler 可以轻松地实现爬虫操作。我们可以根据具体需求使用 JS-crawler 进行更进一步的操作。

总结

本文介绍了 npm 包 JS-crawler 的基础内容和用法,并提供了使用 JS-crawler 爬取网站信息的示例代码。希望读者可以在实践中更好地理解 JS-crawler,并运用到实际开发中。

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

纠错
反馈