我正在尝试使用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。
答案 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