使用cheerio获取属性列表

时间:2018-12-17 03:36:27

标签: node.js cheerio

我想从以下字符串中获取['http://www.1.com', 'http://www.2.com', 'http://www.3.com']

const cheerio = require('cheerio')

const htmlStr = `
<div>

  <div class="item">
    <a href="http://www.1.com"></a>
  </div>

  <div class="item">
    <a href="http://www.2.com"></a>
  </div>

  <div class="item">
    <a href="http://www.3.com"></a>
  </div>

</div>
`

const $ = cheerio.load(htmlStr)

最初,我认为$(div.item a)将返回一个元素数组。所以我尝试了:

const urls = $('div.item a').map(x => x.attr('href'))

失败。

似乎$('div.item a')返回一个object

该怎么做?

谢谢!

2 个答案:

答案 0 :(得分:2)

首先,cheerio的map函数接受一个回调,其中第一个参数是当前的 index ,而不是必须再次包装在$(…)中的元素。接下来,map返回一个“ jQuery集”,而不是普通的JavaScript数组。使用toArray

$('div.item a').map((i, x) => $(x).attr('href')).toArray()

答案 1 :(得分:0)

想出另一种方式:

$('div.item a').get().map(x => $(x).attr('href'))

get()检索所有匹配的元素。