webrobber 是一个前端爬虫库,提供了多种爬取网页数据的功能。通过 npm 包的形式,可以方便地部署到项目中,快速爬取需要的数据。本文将介绍 webrobber 的基本用法,以及一些高级用法和实际应用场景。
安装
使用 npm 可以快速安装 webrobber:
npm install webrobber
基本用法
webrobber 提供了多种方法用于爬取网页数据,其中最基本的方法就是 request
。该方法用于向指定的 URL 发送请求,并返回网页的 HTML 内容。使用方法如下:
-- -------------------- ---- ------- ----- --------- - --------------------- ----- ------ - --- ------------ --------------------------------------- ---------- -- - ------------------ -- ------------ -- - ------------------- ---
运行以上代码,可以看到输出了百度首页的 HTML 代码。这里使用了 Promise 语法,可以方便地处理异步请求结果。如果请求失败,会输出错误信息。
除了请求 HTML 内容,webrobber 还提供了众多数据提取方法,比如 getText
、getAttribute
、getImage
等等。这些方法都可以从 HTML 内容中提取指定的数据,并以 Promise 形式返回。下面是一个简单的示例,从百度首页提取搜索框的占位符文本:
-- -------------------- ---- ------- ----- --------- - --------------------- ----- ------ - --- ------------ --------------------------------------- ---------- -- - ------ ------------------------- -------------------- ------ -- ---------- -- - ------------------ -- ------------ -- - ------------------- ---
这里使用了 getText
方法,它接受一个 CSS 选择器作为参数,可以从 HTML 中提取指定元素的文本内容。如果找不到对应元素,会返回空字符串。在这个示例中,我们使用了 CSS 选择器 .s_ipt_wr input[placeholder]
,代表百度首页的搜索框元素。该元素的占位符文本就是我们要提取的内容。
高级用法
除了上述基本用法外,webrobber 还提供了一些高级用法,来满足更复杂的数据提取需求。
1. 使用代码生成器
如果需要提取的数据存在于多个网页中,且这些网页的 HTML 结构相似,可以使用代码生成器来简化工作。代码生成器可以根据一个网页的 HTML 代码自动产生数据提取代码,供其它网页使用。使用方法如下:
-- -------------------- ---- ------- ----- --------- - --------------------- ----- ------ - --- ------------ -------------------------------------------- ---------- -- - ------------------ -- ------------ -- - ------------------- ---
运行以上代码,会输出一个包含数据提取代码的字符串。将该字符串复制到需要提取数据的网页中,即可直接使用该代码提取数据。
2. 使用并发请求
如果需要爬取的网页很多,可以使用并发请求来提高效率。webrobber 提供了 concurrentRequest
方法,可以同时发起多个请求,提高数据爬取速度。使用方法如下:
-- -------------------- ---- ------- ----- --------- - --------------------- ----- ------ - --- ------------ ----- ---- - ------------------------- ------------------------- ------------------------ ------------------------------------------- ----------- -- - ------------------- -- ------------ -- - ------------------- ---
这里使用了 JavaScript 的 Promise.all 方法,可以等待所有请求都完成后一起处理结果。如果请求失败,会输出错误信息。
实际应用
webrobber 可以应用于多种场景,比如数据采集、搜索引擎优化等。下面是一个简单的应用场景,爬取苏宁易购网站下的所有商品信息,并保存到本地文件中:
-- -------------------- ---- ------- ----- --------- - --------------------- ----- -- - -------------- ----- --- - -------------------------------------------------------------------------------------------------------------------------- ----- ------ - --- ----------- ------ -- -- ---------- - -------- ----- -- ------------ ----- --- ----- ------------- - ----- -- - ------ ------------------- ---------- -- - ----- ---- - ---------------------- -------------------- -------------- ----- ---- --------- ------ ----- --- -- ----- -------- - --- ------------------------ -- -- -------------------- ---------------------------- -- -------------------- --------------- -- - ----- -------- - ------------------------ --------------------------------- ------------------------ ----- --- -------- ---------------- ---- ----- -- ------------------ -- ------------ -- - ------------------ --------- ----------- ---
这里使用了苏宁易购网站的商品搜索接口,通过不同的 pg
参数可以获取不同页的商品数据。使用 fetchPageData
函数获取指定 URL 的商品数据,使用 Array.fill
、Array.map
和 Promise.all
均匀地获取多个页面的商品数据,并将它们合并起来放到一个数组中,最后将数据保存到本地 JSON 文件中。在代码中,还设置了 retry
和 timeout
参数,保证了请求的稳定性与安全性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600671058dd3466f61ffdd55