使用cheerio刮除html can';t检索第二个连续元素

使用cheerio刮除html can';t检索第二个连续元素,html,node.js,cheerio,scrape,Html,Node.js,Cheerio,Scrape,伙计们,我正在使用cheerio抓取一个html文档,如下所示,我需要找出每个文章元素中两个元素的href <article> <div class="row"> <div class="col-md-5 col-6"> <a class="btn" href="https://xxxxxx.png">abc1</a> </div> <div clas

伙计们,我正在使用cheerio抓取一个html文档,如下所示,我需要找出每个文章元素中两个元素的href

<article>
  <div class="row">
       <div class="col-md-5 col-6">
          <a  class="btn" href="https://xxxxxx.png">abc1</a>
       </div>
       <div class="col-md-5 col-6">
          <a class="btn"  href="https://xxxxx">abc2</a>
       </div>
  </div>
</article>

<article>
   ....
</article>

....
nth-child(num)
选择器查找作为其直接父元素的
num
th子元素的元素。这就是为什么
.btn:nth child(2)
不返回任何元素,因为第二个
a
标记也是其直接父级的第一个子级(类为
col-md-5
col-6
div

您可以通过以下方式访问两个
a
标记:

const $ = cheerio.load(html);
$("article").each((i, element) => {
    let allBtns = $(element).find(".btn");
    let element1 = $(allBtns.get(0)).attr("href");
    let element2 = $(allBtns.get(1)).attr("href");

    console.log(element1,element2);
 });
在本例中,我们使用
btn
类获取所有元素,然后在该列表中查找第一个和第二个元素(从零开始的索引)。

第n个子元素(num)选择器查找属于其直接父元素的第
num
子元素。这就是为什么
.btn:nth child(2)
不返回任何元素,因为第二个
a
标记也是其直接父级的第一个子级(类为
col-md-5
col-6
div

您可以通过以下方式访问两个
a
标记:

const $ = cheerio.load(html);
$("article").each((i, element) => {
    let allBtns = $(element).find(".btn");
    let element1 = $(allBtns.get(0)).attr("href");
    let element2 = $(allBtns.get(1)).attr("href");

    console.log(element1,element2);
 });

在本例中,我们使用
btn
类获取所有元素,然后在该列表中查找第一个和第二个元素(从零开始的索引)。

例如,您想要的:
div:nth child(2)a.btn
,因为div是第二个孩子,而不是a。谢谢,我得到了它@pguardiario您想要的示例:
div:nth child(2)a.btn
因为div是第二个孩子,而不是a。谢谢,我知道了@普瓜迪亚里奥