#javascript #node.js #cheerio
#javascript #node.js #приветствие #cheerio
Вопрос:
в настоящее время я создаю веб-скребок с помощью node.Js использует cheerio. я хочу получить данные внутри первого из 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"
. как мне получить данные только из одного класса ? извините, у меня плохой английский. заранее спасибо!
Комментарии:
1. попробуйте добавить индекс нужного элемента .get(0)
2. выбранный вами класс есть,
panel-items-list
но на самом деле онpanel-item-list
в вашем HTML….3. Ваш селектор ‘.panel-items-list’ не соответствует ни одному из элементов, представленных вами в разметке, не могли бы вы добавить больше контекста к примеру?
Ответ №1:
Чтобы получить первый класс только из .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>
Ответ №2:
Используйте сначала():
$('.panel-items-list').first().find('h5').text()