java - 在无 CSS 的 HTML 中提取两个 <hr> 标签之间的文本

标签 java html-parsing jsoup

使用 Jsoup,什么是提取文本的最佳方法,其模式是已知的 ([number]%%[number]),但位于既不使用 CSS 也不使用 div、跨度、类或任何类型的其他标识的 HTML 页面中(是的,我无法控制的旧 HTML 页面)?

唯一始终如一地标识该文本段(并保证保持那样)的是 HTML 总是看起来像这样(在更大的 HTML 主体中):

<hr>
2%%17
<hr>

(数字 2 和 17 只是示例。它们可以是任何数字,事实上,这是我需要从该 HTML 页面可靠地提取的两个变量)。

如果该文本位于封闭且唯一标识的 <span> 中或 <div> ,我使用 Jsoup 提取它没有问题。问题是情况并非如此,我现在能想到的唯一方法(一点也不优雅)是通过正则表达式。

通过正则表达式处理原始 HTML 似乎效率低下,因为我已经通过 Jsoup 将其解析为 DOM。

建议?

最佳答案

这个怎么样?

Document document = Jsoup.connect(url).get();
Elements hrs = document.select("hr");
Pattern pattern = Pattern.compile("(\\d+%%\\d+)");

for (Element hr : hrs) {
    String textAfterHr = hr.nextSibling().toString();
    Matcher matcher = pattern.matcher(textAfterHr);

    while (matcher.find()) {
        System.out.println(matcher.group(1)); // <-- There, your data.
    }
}

关于java - 在无 CSS 的 HTML 中提取两个 <hr> 标签之间的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7290066/

相关文章:

带有变量的PHP简单html dom解析器div id

java - 元素无法解析为类型

java - 如何避免在 Jsoup 解析中包围 html head 标签

java - JSON 异常 - 所需参数没有值

java - 从 Java 或 C# 访问一个用 Python 编写的返回数组的函数

java - 找出流中有多少字节的更好方法?

java - 使用鼠标点击找到最近的点对

java - 为运行时加载的类转换对象

javascript - Python BeautifulSoup html.parser 不工作

php - 在不实际访问页面的情况下获取网页源代码