cheerio webcrawler获取序列元素

时间:2018-11-23 19:53:15

标签: node.js web-crawler cheerio

我正在开发一个网络爬虫,以读取这样的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 :(得分:0)

有以下几种方式:

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不支持。