13

我正在尝试使用 Jsoup 解析 html 文档以获取所有标题标签。此外,我需要将标题标签分组为 [h1] [h2] 等...

     hh = doc.select("h[0-6]");

但这给了我一个空数组。

4

3 回答 3

25

您的选择器在这里表示具有“0-6”属性的 h-Tag - 不是正则表达式。但是您可以改为组合多个选择器:hh = doc.select("h0, h1, h2, h3, h4, h5, h6");.

分组:您需要一个包含所有 h-Tag 的组 + 每个 h1、h2、... 标签的组还是每个 h1、h2、... 标签的组?

这是一个如何执行此操作的示例:

// Group of all h-Tags
Elements hTags = doc.select("h1, h2, h3, h4, h5, h6");

// Group of all h1-Tags
Elements h1Tags = hTags.select("h1");
// Group of all h2-Tags
Elements h2Tags = hTags.select("h2");
// ... etc.

如果您想为每个 h1、h2、... 标签设置一个组,您可以删除第一个选择器并替换hTagsdoc其他选择器。

于 2012-10-21T14:10:57.767 回答
2

使用doc.select("h1,h2,h3,h4,h5,h6")获取所有标题标签。使用doc.select("h1")分别获取每个标签。在http://preciselyconcise.com/apis_and_installations/jsoup/j_selector.php中查看您可以使用 select 语句执行的各种操作

于 2014-02-09T11:03:55.247 回答
0

这是答案的 Scala 版本,它使用 Ammonite 的语法来指定 Jsoup 的 Maven 坐标:

import $ivy.`org.jsoup:jsoup:1.11.3`
val html = scala.io.Source.fromURL("https://scalacourses.com").mkString
val doc = org.jsoup.Jsoup.parse(html)
doc.select("h1, h2, h3, h4, h5, h6, h7").eachText()
于 2019-05-07T08:55:53.130 回答