首页 > 解决方案 > Cheerio webcrawler 获取序列元素

问题描述

我正在开发一个网络爬虫来读取这样的 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 的方法。

在文档中,我只能进入一个元素(孩子)并回来(父母)。但我找不到下一个'

' 在找到它上面的 '' 之后。

有什么想法吗?

谢谢!

标签: node.jsweb-crawlercheerio

解决方案


这里有几种方法:

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


推荐阅读