cheerio / jquery 选择器:如何获取嵌套 div 中的元素列表?
cheerio / jquery selectors: how to get a list of elements in nested div's?
我需要从 html 页面解析一些与此类似的标记:
<div id="list">
<div class="item-level-a">
<div class="item-level-b">
<a href="http://www.example.com/1"></a>
</div>
</div>
<div class="item-level-a">
<div class="item-level-b">
<a href="http://www.example.com/2"></a>
</div>
</div>
<div class="item-level-a">
<div class="item-level-b">
<a href="http://www.example.com/3"></a>
</div>
</div>
</div>
我试过这个代码:
$list = [];
$('div[id="list"]').each(function() {
var href = $(this).find('div > div > a').attribs('href');
list.push(href);
});
没有成功:错误是:
TypeError: Object <a href="http://www.example.com/1"></a>
<a href="http://www.example.com/2"></a>
<a href="http://www.example.com/3"></a>
has no method 'attribs'
:-(.
有线索吗?
在 cheerio
和 jquery
中,您使用 attr()
获取属性,而不是 attrib()
。
您的代码还有一些其他问题。这是一个使用 cheerio
的工作版本。它也可能以这种方式在 jquery
中工作。:
var list = [];
$('div[id="list"]').find('div > div > a').each(function (index, element) {
list.push($(element).attr('href'));
});
console.dir(list);
喜欢实用风格的人:
const list = $('div[id="list"]')
.find('div > div > a')
.toArray()
.map(element => $(element).attr('href')));
我需要从 html 页面解析一些与此类似的标记:
<div id="list">
<div class="item-level-a">
<div class="item-level-b">
<a href="http://www.example.com/1"></a>
</div>
</div>
<div class="item-level-a">
<div class="item-level-b">
<a href="http://www.example.com/2"></a>
</div>
</div>
<div class="item-level-a">
<div class="item-level-b">
<a href="http://www.example.com/3"></a>
</div>
</div>
</div>
我试过这个代码:
$list = [];
$('div[id="list"]').each(function() {
var href = $(this).find('div > div > a').attribs('href');
list.push(href);
});
没有成功:错误是:
TypeError: Object <a href="http://www.example.com/1"></a>
<a href="http://www.example.com/2"></a>
<a href="http://www.example.com/3"></a>
has no method 'attribs'
:-(.
有线索吗?
在 cheerio
和 jquery
中,您使用 attr()
获取属性,而不是 attrib()
。
您的代码还有一些其他问题。这是一个使用 cheerio
的工作版本。它也可能以这种方式在 jquery
中工作。:
var list = [];
$('div[id="list"]').find('div > div > a').each(function (index, element) {
list.push($(element).attr('href'));
});
console.dir(list);
喜欢实用风格的人:
const list = $('div[id="list"]')
.find('div > div > a')
.toArray()
.map(element => $(element).attr('href')));