如何使用 cheerio 从两个相同的 class 中获取第一个 class

How to get the first class from two same classes with cheerio

目前我正在使用 cheerio node.Js 制作网络抓取工具。我想在 class="panel-items-list.

的第一个中获取数据

html 看起来像这样

<div class="margin-bottom-=30">
  <div class="side-list-panel">
    <ul class="panel-item-list">...</ul>
  </div>
</div>
<div class="margin-bottom-=30">
  <div class="side-list-panel">
    <ul class="panel-item-list">...</ul>
  </div>
</div>

我已经这样做了

const relateArticle = $('.panel-items-list').map((i, section)=>{
                    let articles = $(section).find('h5');
                    return articles.text();

                }).get();

但它 return 来自两个 class="panel-items-list" 的数据。我如何仅从一个 class 获取数据?对不起,我的英语不好。提前致谢!

要仅从 .panel-item-list 中获取第一个 class,请使用 .get(0),这意味着您仅选择使用 .map

找到的第一个索引

此外,在您当前的 code jQuery 中,您没有选择正确的 class 选择器。

此外,在获取文本时使用 .trim() 方法清除文本中任何 看不见的空格

现场工作演示:

const relateArticle = $('.panel-item-list').map((i, section) => {
  let articles = $(section).find('h5');
  return articles.text().trim();
}).get(0)

console.log(relateArticle) //Foo
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="margin-bottom-=30">
  <div class="side-list-panel">
    <ul class="panel-item-list">
      <h5>
        Foo
      </h5>
    </ul>
  </div>
</div>
<div class="margin-bottom-=30">
  <div class="side-list-panel">
    <ul class="panel-item-list">
      <h5>
        Bar
      </h5>
    </ul>
  </div>
</div>

首先使用():

$('.panel-items-list').first().find('h5').text()