如何使用node.js“规范化”HTML?

时间:2016-03-11 19:11:45

标签: javascript html node.js

我正在尝试使用NodeJS和cheerio处理页面,但由于额外的结束标记,我遇到了一些问题,这似乎是将其抛弃。在处理页面之前,我是否可以使用任何NodeJS库来首先将页面转换为格式正确的HTML,这与浏览器的方式非常相似?

我看到的HTML示例:

<tr><td><a href="...">mylink</a></td></tr>
<tr><td><a href="...">mylink</a></td></td></tr>
<tr><td><a href="...">mylink</a></td></td></tr>

和我的代码:

var nodes = $('div table[cellpadding=3] tr td a')

如果没有额外的结束标记,它会返回三个锚点,但在当前场景中它只返回一个。我在Cheerio中没有看到任何解决方法,因此想要预处理HTML。

2 个答案:

答案 0 :(得分:0)

基于一些实验,我最终使用了jsdom,利用它创建DOM的能力,并且能够序列化该文档对象模型:

function processPage(data) {
    data = jsdom(data).documentElement.outerHTML
    $ = cheerio.load(data);
    ...
}

注意,我可能完全用jsdom替换cheerio,但我需要先比较功能集。

答案 1 :(得分:0)

您可以尝试使用gulp-html-replace

npm i gulp-html-replace

更多信息:https://www.npmjs.com/package/gulp-html-replace