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
  // ...
});
Другие вопросы по тегам