为了账号安全,请及时绑定邮箱和手机立即绑定

使用cheerio获取html中的元素名称

使用cheerio获取html中的元素名称

慕桂英3389331 2023-10-10 10:34:25
前端的新手。我在使用 Cheerio 获取 html 中的元素时遇到问题。请参阅下面我正在尝试的内容。我看了其他帖子,它们有助于理解cheerio的工作原理,但不是这个。我的目标是获得价值。我想从中获得 67% 的价值<td class="ctr2">67%</td>。我变得不确定。该标签td class="ctr2"出现多次,但我只想从第一次出现。我已经尝试安静一段时间了。我开始undefined使用cheerio。我缺少什么?<tfoot>                <tr>                    <td>Total</td>                    <td class="bar">966 of 2,945</td>                    <td class="ctr2">67%</td>                    <td class="bar">56 of 168</td>                    <td class="ctr2">66%</td>                    <td class="ctr1">72</td>                    <td class="ctr2">224</td>                    <td class="ctr1">167</td>                    <td class="ctr2">580</td>                    <td class="ctr1">31</td>                    <td class="ctr2">140</td>                    <td class="ctr1">0</td>                    <td class="ctr2">17</td>                </tr>            </tfoot>我在下面尝试在node.js中使用cheerioconst cheerio = require('cheerio');var fs = require('fs');const demo= cheerio.load(fs.readFileSync('sample123.html'))console.log(demo('#ctr2'));
查看完整描述

1 回答

?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

我发现您的代码有几个问题:

  1. #ctr2是带有 的元素的选择器id="cntr2"id您的 HTML 中没有任何值。".ctr2"相反,如果您想选择具有该类名称的项目,则需要使用。

  2. 您的 HTML 不完整,因为没有<table>及其</table>周围的内容。

如果您修复这两件事并运行此代码:

const cheerio = require('cheerio');

var fs = require('fs');


const $ = cheerio.load(fs.readFileSync('sample123.html'))

$('.ctr2').each((index, element) => {

    console.log($(element).text());    

});

然后,它将生成以下输出:


67%

66%

224

580

140

17

如果您只想要第一.cntr2项,则可以.first()在选择器结果上使用,如下所示:


const cheerio = require('cheerio');

var fs = require('fs');


const $ = cheerio.load(fs.readFileSync('sample123.html'))

console.log($('.ctr2').first().text());

这将生成以下输出:


67%


查看完整回答
反对 回复 2023-10-10
  • 1 回答
  • 0 关注
  • 65 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信