Webscraping с cheerio: удаление или игнорирование дочернего элемента?
Итак, у меня есть веб-сайт, который я хочу очистить, структурированный следующим образом:
<p><strong>some headline:</strong> some content etc. blabla </p>
<p><strong>some other headline:</strong> some more content etc. blabla </p>
// and so on...
Я соскребаю это с cheerio следующим образом:
$('p strong').each(function(i, element){
console.log($(this).text());
//gets me the headline
console.log("Parent:" + $(this).parent().text());
//gets me the content, but unfortunately, also the headline again
});
На данный момент я просто регистрирую все, но позже я хочу сохранить заголовки и контент в отдельных переменных. Тем не менее, поскольку заголовок (который можно найти в <strong>
теги) также является частью <p>
теги, моя вторая команда (которая предназначена для получения только контента, без заголовка, так как я уже получил это) получает не только контент, но и заголовок снова. Как я могу отделить или удалить все, что находится в <strong>
и просто сохраните все остальное в <p>
тэг, т.е. только контент?
1 ответ
Решение
Вероятно, проще всего удалить элемент заголовка:
$('p strong').each(function(i, element){
var $this = $(this);
var headline = $this.text(); // Get headline text
var parent = $this.parent(); // Get parent
$this.remove(); // Remove headline element
var body = parent.text(); // Get body text
// ...
});