我正在尝试使用 Jsoup 解析 html 文档以获取所有标题标签。此外,我需要将标题标签分组为 [h1] [h2] 等...
hh = doc.select("h[0-6]");
但这给了我一个空数组。
您的选择器在这里表示具有“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、... 标签设置一个组,您可以删除第一个选择器并替换hTags
为doc
其他选择器。
使用doc.select("h1,h2,h3,h4,h5,h6")获取所有标题标签。使用doc.select("h1")分别获取每个标签。在http://preciselyconcise.com/apis_and_installations/jsoup/j_selector.php中查看您可以使用 select 语句执行的各种操作
这是答案的 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()