如何使用 Grunt 将 HTML 解析为 DOM

Posted

技术标签:

【中文标题】如何使用 Grunt 将 HTML 解析为 DOM【英文标题】:How to parse HTML to DOM with Grunt 【发布时间】:2016-10-25 20:56:28 【问题描述】:

我是 Grunt 的新手,试图找到一种方法来加载多个 html 文件并解析它们以提取一些值。

我尝试使用jQuery.parseHTMLHTMLParser,但两者都没有定义。有没有办法包含 jQuery 或可以解析 HTML 的库?

grunt.config.init(
    concat: 
        options: 
            dest: 'tmp',
            templates: ['public/*.html']
        
    
);

var recursiveConcat = function(source, result)
    grunt.file.expand(source).forEach(function(file)
        var data = grunt.file.read(file);
        // parse html to dom
        result += data;
    );
    return result;
;

【问题讨论】:

Node 不是浏览器,所以它没有windowdocument。即使你加载了 jQuery,你仍然没有 DOM 解析器。 相关问题:How do I parse a HTML page with Node.js, Why doesn't node.js have a native DOM? 这与 grunt 具体有什么关系? 【参考方案1】:

Cheerio 是我喜欢使用的 DOM 解析器。我还没有尝试过,但是grunt-dom-massager 允许您在 Gruntfile 中加载 Cheerio。

【讨论】:

【参考方案2】:

看起来编写自己的 Grunt 任务非常简单。 示例和演练here 和 here

然后您使用htmlparser 创建一个任务来管理您的流程。

但是,除非您打算重新使用它或将它与其他一些 grunt 任务(如 grunt-watch)配对,否则您可能会发现使用 htmlparser 创建节点脚本更容易

【讨论】:

以上是关于如何使用 Grunt 将 HTML 解析为 DOM的主要内容,如果未能解决你的问题,请参考以下文章

PHP - 如何解析HTML文件

如何使用 grunt 将编译好的玉文件复制到目标文件夹

浏览器中的页面

在 Grunt 任务中读取文件名

浏览器如何解析网页

浏览器如何解析网页