使用cheerio获取属性列表

mCY*_*mCY 5 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)
Run Code Online (Sandbox Code Playgroud)

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

const urls = $('div.item a').map(x => x.attr('href'))
Run Code Online (Sandbox Code Playgroud)

它失败了。

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

怎么做?

谢谢!

Li3*_*357 12

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

\n\n
$(\'div.item a\').map((i, x) => $(x).attr(\'href\')).toArray()\n
Run Code Online (Sandbox Code Playgroud)\n