使用Jsoup,提取文本的最佳方法是什么,其模式已知([number]%%[number]
)但位于既不使用CSS也不使用div,跨越,类或其他任何标识的HTML页面type(是的,我无法控制的旧HTML页面)?
唯一能够始终识别该文本片段(并保证保持这种状态)的唯一方法就是HTML 始终看起来像这样(在更大的HTML体内):
<hr>
2%%17
<hr>
(数字2和17仅为示例。它们可以是任何数字,实际上,这些是我需要从该HTML页面可靠地提取的两个变量。)
如果该文本位于封闭且唯一标识<span>
或<div>
的范围内,那么使用Jsoup提取它是没有问题的。问题是情况并非如此,我现在能想到的唯一方法(根本不是 优雅)是通过一个处理原始 HTML正则表达式。
通过正则表达式处理原始HTML似乎效率低下,但因为我已经通过Jsoup将其解析为DOM。
建议?
答案 0 :(得分:2)
这个怎么样?
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.
}
}