Cheerio 获取类的多个匹配项中的第一个元素

问题描述 投票:0回答:2
javascript web-scraping dom cheerio
2个回答
2
投票

您应该能够像这样访问数据。

var firstEl = parsedHTML
  .find('.flex__col--md-2.flex__col--xs-4')
  .first()
  .find('.u-text-white');
var data = firstEl.find('strong').text();

0
投票

改进现有答案,您可以使用自然的 CSS 链接,而无需多次

.find()
调用:

const cheerio = require("cheerio"); // ^1.0.0-rc.12

const html = `<div class="flex__col--md-2 flex__col--xs-4  color-box color-box--orange color-box--no-pad  text-center">
  <p class="u-text-white">
    <strong>208,00 Euro</strong>
  </p>
</div>
<div class="flex__col--md-2 flex__col--xs-4  color-box color-box--orange color-box--no-pad  text-center">
  <p class="u-text-white">
    <strong>1.978,00 Euro</strong>
  </p>
</div>`;

const $ = cheerio.load(html);
const text = $(".flex__col--md-2.flex__col--xs-4 p.u-text-white")
  .first()
  .text()
  .trim();
console.log(text); // => 208,00 Euro

这里答案的关键部分是

.first()
.last()
.nth(0)
.first()
上有用的变体函数。

其他选项包括:

const text = $(".flex__col--md-2.flex__col--xs-4 p.u-text-white:nth(0)")
  .text()
  .trim();

const text = $(".flex__col--md-2.flex__col--xs-4 p.u-text-white:first")
  .text()
  .trim();
© www.soinside.com 2019 - 2024. All rights reserved.