#javascript #jquery #node.js #web-scraping #cheerio
#javascript #jquery #node.js #веб-очистка #cheerio
Вопрос:
У меня есть много html-файлов с приведенной ниже структурой. Мне нужно получить значения ‘GET’ и ‘http://localhost:5601/app/sense «снизу. но они не являются точными одинаковыми значениями во всех документах, будь то post, put или delete. но структура html такая же.
<colgroup>
<col class="col-lg-1">
<col class="col-lg-7">
</colgroup>
<tbody>
<tr>
<td>
<code>Method</code>
</td>
<td>GET</td>
</tr>
<tr>
<td>
<code>URL Path amp;amp; Params</code>
</td>
<td>http://localhost:5601/app/sense</td>
</tr>
</tbody>
</table>
Есть предложения о том, как это сделать с помощью cheerio? Я пытаюсь проанализировать таблицу HTML в поисках значений метода и URL в элементе td, но мне не повезло.
glob(__dirname "/../docs/*/*/*/*/*/*.html", function (er, files) {
for (var i = 0; i < files.length; i ) {
fs.readFile(files[i], (err, data) => {
if (err) throw err;
$ = cheerio.load(data);
$('tr').each(function () {
console.log($('td').val());
});
});
}
});
Ответ №1:
Вы должны настроить таргетинг на каждый TD и получить текст, он не имеет значения
glob(__dirname "/../docs/*/*/*/*/*/*.html", function (er, files) {
for (var i = 0; i < files.length; i ) {
fs.readFile(files[i], (err, data) => {
if (err) throw err;
var $ = cheerio.load(data);
var method = $('tr').eq(0).find('td').eq(1).text();
var url = $('tr').eq(1).find('td').eq(1).text();
});
}
});
Ответ №2:
Используйте .eq и .найдите методы для поиска ваших значений https://cheerio.js.org /
glob(__dirname "/../docs/*/*/*/*/*/*.html", function (er, files) {
for (var i = 0; i < files.length; i ) {
fs.readFile(files[i], (err, data) => {
if (err) throw err;
$ = cheerio.load(data);
console.log($('tr').eq(0).find('td').eq(1).text());
console.log($('tr').eq(1).find('td').eq(1).text());
});
}
});