问题描述
当前,我正在使用cheerio用node.Js制作网络刮板。我想将数据放入class="panel-items-list
的第一行中。
html看起来像这样
<div class="margin-bottom-=30">
<div class="side-list-panel">
<ul class="panel-item-list">...</ul>
</div>
</div>
<div class="margin-bottom-=30">
<div class="side-list-panel">
<ul class="panel-item-list">...</ul>
</div>
</div>
我已经这样做了
const relateArticle = $('.panel-items-list').map((i,section)=>{
let articles = $(section).find('h5');
return articles.text();
}).get();
,但它从两个class="panel-items-list"
返回数据。我如何仅从一个班级获得数据?对不起,我的英语不好。预先感谢!
解决方法
要仅从.panel-item-list
获取第一类,请使用.get(0)
,这意味着您仅选择使用.map
找到的第一类索引
此外,在您当前的code
jQuery
中,您没有选择正确的class
选择器。
在获取文本以清除文本中任何看不见的空间时,还使用.trim()方法。
实时工作演示:
const relateArticle = $('.panel-item-list').map((i,section) => {
let articles = $(section).find('h5');
return articles.text().trim();
}).get(0)
console.log(relateArticle) //Foo
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="margin-bottom-=30">
<div class="side-list-panel">
<ul class="panel-item-list">
<h5>
Foo
</h5>
</ul>
</div>
</div>
<div class="margin-bottom-=30">
<div class="side-list-panel">
<ul class="panel-item-list">
<h5>
Bar
</h5>
</ul>
</div>
</div>
,
使用first():
$('.panel-items-list').first().find('h5').text()