2016-03-11 2 views
0

Я пытаюсь обрабатывать страницу с помощью NodeJS и cheerio, но я сталкиваюсь с несколькими проблемами из-за дополнительных закрывающих тегов, которые, похоже, отбрасывают. Есть ли какая-нибудь библиотека NodeJS, которую я могу использовать для первого преобразования страницы в правильно отформатированный HTML, прежде чем ее обрабатывать, во многом так же, как браузер?Как «нормализовать» HTML с node.js?

Пример 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

Если это последова- та же проблема, вы можете выполнять поиск и замену '' с '' – psiphi75

+0

Мне не нравится этот подход, так как это потребует кода для одного варианта использования, и я предпочел бы иметь решение, которое я могу использовать с другими плохо отмеченными страницами, что рендеринг в браузере. –

ответ

0

На основании некоторых экспериментов, я закончил с использованием jsdom, воспользовавшись своей способностью создавать DOM, а также быть в состоянии сериализации, что модель объекта документа:

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

Примечания, я мог бы заменить Cheerio с jsdom полностью, но сначала мне нужно будет сравнить набор функций.

Смежные вопросы