我有很多具有以下结构的html文件。我需要从下面获取值'GET'和'http://localhost:5601/app/sense'。但它们在所有文件中的值不完全相同,可以是邮寄,放置或删除。但是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 & Params</code>
</td>
<td>http://localhost:5601/app/sense</td>
</tr>
</tbody>
</table>
有关如何使用cheerio进行此操作的任何建议?我试图通过HTML表解析在td元素中搜索方法和URL值,但我没有运气。
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());
});
});
}
});
答案 0 :(得分:0)
您必须定位每个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();
});
}
});
答案 1 :(得分:0)
使用.eq和.find方法查找您的值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());
});
}
});