在下面的场景中,我们有一个来自任何页面String
的原始数据HTML
(它可以是你想要的大小),我们必须找到一些值(HTML
没有任何Id
或clases
)
在String
带有 html 代码的大文件中,我们必须提取一些值并将它们保存在变量中,在本例中为总积分 (60) 的值。
String response = "...
<BR>
<FONT COLOR="NAVY" FACE="ARIAL" SIZE="2">
<B>TOTAL CREDITS:</B>&NBSP; 60
</FONT>
<BR>
..."
提取该值的最佳方法是什么?
我所做的是识别一个唯一的prefix
,我在那个时候切断了字符串,然后我切断了sufix
.
String value = response.split("TOTAL CREDITS:</B>&NBSP;")[1].split("</FONT>")[0].trim();
有没有更好的方法来做到这一点?
有用于从 java 解析 HTML 文件的特定 API。
这个链接可以是一个很好的起点https://www.mkyong.com/java/jsoup-html-parser-hello-world-examples/
如果您使用的是 maven,则必须包含一个依赖项
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.10.2</version>
</dependency>
然后,您可以使用此代码作为起点,如您所见,使用 jsoup 将文档 DOM 作为文档加载,然后您可以使用与解析 xml 文件类似的方法搜索 dom 元素:
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;
Document doc;
try {
// need http protocol
doc = Jsoup.connect("http://google.com").get();
// get page title
String title = doc.title();
System.out.println("title : " + title);
// get all links
Elements links = doc.select("a[href]");
for (Element link : links) {
// get the value from href attribute
System.out.println("\nlink : " + link.attr("href"));
System.out.println("text : " + link.text());
}
} catch (IOException e) {
e.printStackTrace();
}
希望这可以帮助
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句