2016-03-11 40 views
0

我正在尝试使用NodeJS和cheerio处理页面,但是由于额外的结束标记,我似乎遇到了一些问题,这似乎正在抛弃它。是否有任何NodeJS库可用于在处理它之前首先将页面转换为格式正确的HTML,这与浏览器的工作方式大致相同?如何使用node.js“标准化”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

如果是consistantly同样的问题,你可以搜索和替换 '' – psiphi75

+0

我对这种方法感到不舒服,因为这会涉及单个用例的代码,我宁愿有一个解决方案,我可以使用其他严重标记的页面,在浏览器中呈现罚款。 –

回答

0

基于一些实验,我结束了使用jsdom,服用它来创建一个DOM能力优势的同时也能够连载该文档对象模型:

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

注意,我大概可以代替cheerio与jsdom完全,但我需要首先比较功能集。