Skip to main content
 首页 » 编程设计

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

2023年09月09日27yjmyzz

使用 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. 
    } 
}