Cheerio Webcrawler получить элемент последовательности - PullRequest
0 голосов
/ 23 ноября 2018

Я разрабатываю веб-сканер для чтения HTML-кода, например:

<h3>title 1</h3>
<p>content 1</p>
<h3>title 2</h3>
<p>content 2</p>
<h3>title 3</h3>
<p>content 3</p>
<h3>title 4</h3>
<p>content 4</p>
<h3>title 5</h3>
<p>content 5</p>

Я хочу сопоставить заголовок 1 с контентом 1, заголовок 2 с контентом 2 и так далее.Я не нашел в документации cheerio или jquery способ получить следующий элемент или зациклить весь DOM.

в документах я могу зайти только внутрь элемента (дети) и вернуться (родители).но я не могу найти способ получить следующее '

' после того, как найду '' над ним.

любая идея?

спасибо!

1 Ответ

0 голосов
/ 24 ноября 2018

Вот несколько способов:

const cheerio = require('cheerio')
const $ = cheerio.load('<h3>title 1</h3><p>content 1</p><h3>title 2</h3><p>content 2</p><h3>title 3</h3><p>content 3</p><h3>title 4</h3><p>content 4</p><h3>title 5</h3><p>content 5</p>')

$('h3').get().map( h3 => {
  let title = $(h3).text()
  let content = $(h3).next().text()
  // or
  content = $(h3.nextSibling).text()
  console.log(title, content)
} )

jQuery позволяет вам сделать $(h3).find('+ p'), что было бы неплохо, но cheerio его не поддерживает.

...