如今对于前端工程师来说,爬取数据不再是一个孤立的需求,他们需要收集不同网站上的数据以不同的形式呈现在自己的网站上。而 @epegzz/node-scraper 这个 npm 包则提供了一种方便快捷的方式去实现数据爬取。
什么是 @epegzz/node-scraper?
@epegzz/node-scraper 是一个 Node.js 环境下的 web 爬虫工具, 支持在常见的 web 页面中获取特定元素的值,它可以轻松地在网站上爬取指定数据并返回。
安装
使用 NPM 进行安装:
npm install @epegzz/node-scraper
示例代码
-- -------------------- ---- ------- ----- ------- - -------------------------------- ----- ------- - --- ---------- -- -------- ---------------- ---- --------------------------- ------- ------ ---------- - ------ ------- ---- ------------ ------- ---- ------ - --------- ------ ----- ------ -------- ----------------------------------------- -- ------ - ----- ---- ----- ------ -- -------- - --------- ----------- ----------- - ------ ----------------- ------ ----------------- ------ - --------- ----------------- ----- ------ -------- ----------------------------------------- - - - - ------------ -- - ------------------ ------------ -- - ---------------------- ------- ----- ---
规则定义
URL
配置爬取数据的网站 URL。
url: 'https://www.example.com/'
Method
获取网站数据的方式。支持的方法有:GET、POST、PUT 和 DELETE。
method: 'GET'
Selectors
表示你要爬取的数据的定义方式,selectors 是一个对象,可以其中包含多个键值对,每个键值对对应了对应 DOM 元素的查询方式。
例如:
selectors: { title: 'header h1', description: 'header h2', }
这样我们就成功的查询了页面中 <header>
元素下的 <h1>
和 <h2>
元素,并且成功的将遍历的结果放在了 title
和 description
里面,通过返回的数据可以直接使用。
目前支持的格式有:
-- -------------------- ---- ------- -- ---------- --------- ---- --------- ---------- --------- --------- --- --------------- -- ---------- ----- ---- ----- ----------- ----- ---------- - -- ----- - --------- - --------- --------------------- ----- -------- -------- --- ----- ------ - -- -- ----------- ----------- - ------ ----------------- ------ ----------------- ------ - --------- ----------------- ----- ------ -------- ----------------------------------------- - -
其中,properties
类型的选择器支持更深的嵌套结构。
特定属性的获取
有时候我们还需要更 加精准的指定属性,此时我们可以直接指定:
image: { selector: 'img', attr: 'src', default: 'https://www.example.com/placeholder.png' }
其中,我们指定了需要查询的 img
元素,并且只需要其中包含的 src
属性。 此外,如果我们所要查询的元素不支持 src
属性,那么可以直接在 default
里刻画一张默认图片。
链式查询
如果同一个爬虫中需要反复查询不同链接,那么我们很可能需要考虑用链式查询的方式进行,例如:
-- -------------------- ---- ------- ------- --------- ---- --------------------------------- ---------- - ------ ------- --- - -- ---------- -- - ------------------ -- -------- -- - ------ ---------------- ---- --------------------------------- ---------- - ------ ------- --- - --- -- ---------- -- - ------------------ -- ---------- -- - ------------------- ---
最后的话
相信在文章中我们已经了解了如何使用 @epegzz/node-scraper,以及如何通过它支持我们需要的数据获取流程,这对于完善前端工作流会有很大的意义。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066e19a563576b7b1ecb87