使用cheerio抓取html无法检索第二个连续元素

时间:2019-04-29 17:24:39

标签: html node.js cheerio scrape

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

UPDATE tablename 
SET ActTyp = 'INDEPENDENT' 
WHERE ' I' = RIGHT(ActvTyp, 2)

下面是我的脚本,该脚本使用.btn查找每个元素,并使用nth-child按顺序获取它们,它可以成功获取第一个元素的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>

....

1 个答案:

答案 0 :(得分:2)

nth-child(num)选择器将查找作为其直接父级的第num个子级的元素。这就是.btn:nth-child(2)不返回任何元素的原因,因为第二个a标记也是其直接父级(类divcol-md-5的{​​{1}}的第一个孩子)。

您可以通过以下方式访问两个col-6标签:

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); }); 类获得所有元素,然后在该列表中查找第1个和第2个元素(从零开始的索引)。