介绍
html-scraper-pipeline 是一个 npm 包,它可以帮助我们从网页上抽取并处理数据。这个包的设计极其灵活,可扩展性极高,使得我们可以根据自己的需求,自由组合出一个针对我们 specific use case 的抓取网络数据的 pipeline。
安装
npm install html-scraper-pipeline
基本用法
Step 1: 初始化 Pipeline
首先,我们需要对 Pipeline 进行初始化。这个过程是通过实例化 Pipeline 类来完成的。
const { Pipeline } = require("html-scraper-pipeline"); const pipeline = new Pipeline();
Step 2: 添加 Parser
我们需要告诉 Pipeline 如何解析输入的 HTML。这个过程是通过添加 parser plugin 来完成的。html-scraper-pipeline
包提供了一些基本的 parser plugin,我们可以使用 setParser()
方法来加载。
const { setParser } = require("html-scraper-pipeline/lib/parser"); pipeline.setParser(setParser());
Step 3: 添加提取规则
接着,我们需要告诉 Pipeline 对 HTML 的哪些部分感兴趣。这个过程是通过添加 extractor plugin 来完成的。html-scraper-pipeline
包提供了一些常见的 extractor plugin,可以用 setExtractor()
方法来加载。
const { setExtractor } = require("html-scraper-pipeline/lib/extractor"); pipeline.setExtractor(setExtractor({ title: "title", content: "article" }));
以上代码告诉 Pipeline 提取 HTML 页面中的 <title>
和 <article>
标签。
Step 4: 添加处理器
最后,我们需要告诉 Pipeline 对提取出来的数据做些什么。这个过程是通过添加 processor plugin 来完成的。我们可以自行编写 processor plugin,也可以使用 html-scraper-pipeline
包提供的一些常用的 plugin。
const { setData, setFileName } = require("html-scraper-pipeline/lib/processor"); pipeline.addProcessor(setData()); pipeline.addProcessor(setFileName("article.txt"));
以上代码告诉 Pipeline 获取的数据应该存在哪个文件中。
Step 5: 执行 Pipeline
完成前面的步骤后,我们可以运行 Pipeline ,得到我们想要的结果了。
pipeline.process("https://www.example.com/article.html");
示例代码
- 获取网页标题,并保存在文件
title.txt
中:
-- -------------------- ---- ------- ----- - -------- - - --------------------------------- ----- - --------- - - -------------------------------------------- ----- - ------------ - - ----------------------------------------------- ----- - -------- ----------- - - ----------------------------------------------- ----- -------- - --- ----------- -------------------------------- ------------------------------------ ------ ------- ---- --------------------------------- ------------------------------------------------ ---------------------------------------------------------
- 获取网页正文,并保存在文件
article.txt
中:
-- -------------------- ---- ------- ----- - -------- - - --------------------------------- ----- - --------- - - -------------------------------------------- ----- - ------------ - - ----------------------------------------------- ----- - -------- ----------- - - ----------------------------------------------- ----- -------- - --- ----------- -------------------------------- ------------------------------------ -------- --------- ---- --------------------------------- -------------------------------------------------- ---------------------------------------------------------
总结
通过 html-scraper-pipeline
包,我们可以很方便地抽取网络数据。我们通过这个 package 中的类和插件来实现我们的抓取流程,其中各插件间相互配合,使用直观,可扩展性强。这么多的插件让 html-scraper-pipeline
有超强的灵活性,可以满足大多数使用场景。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066b4e51ab1864dac6689f