htmlparser2. Надо выдернуть только тест внутри тега.
Здравствуйте.
Пытаюсь выдернуть из сайта внутренности тегов <tr class="abc"></tr> Но у меня получается на столько запущенная каша, что я даже не могу сформулировать, что же я вытянул из html-страницы. Подскажите пожалуйста, что надо изменить, чтобы вытаскивать только то, что внутри тега <tr>. request(testURL, function (error, response, body) { if (!error && response.statusCode == 200) { var parser = new htmlparser.Parser({ onopentag: function(name, attribs){ if(name === "tr" && attribs.class === "abc" ){ console.log(name,attribs); } }, ontext: function(text){ console.log("text: ", text); }, onclosetag: function(tagname){ if(tagname === "tr"){ console.log("Next one"); } } }); parser.write(body); parser.end(); } }) |
заведи массив rowStack. При появлении tr пушишь в массив что-нибудь (например, true). Кроме того, проверяешь всякий раз этот стэк на пустоту. Если не пуст - ты внутри tr, лови тег/текст. Если пуст - ты вне строки.
По закрытию тега tr делай rowStack.pop() Стэк нужно использовать потому что внутри одной таблицы может находиться другая. Если таких случаев у тебя заведомо не будет - можешь обойтись просто флагом inTableRow : true/false |
Другой вариант - построить DOM. Затем уже через querySelector сделать выборку (как в браузере).
Но это уже затратный по производительности способ. |
Спасибо!
|
Часовой пояс GMT +3, время: 13:10. |