我需要從HTML頁面提取值。如何使用JAVA解析來自HTML頁面的值
該頁面包含此:
我想從那裏只提取值。
我試過這段代碼:
import java.io.*;
import java.net.*;
import javax.swing.text.html.*;
import javax.swing.text.html.parser.*;
public class Test extends HTMLEditorKit.ParserCallback {
StringBuffer txt;
Reader reader;
// empty default constructor
public Test() {}
// more convienient constructor
public Test(Reader r) {
setReader(r);
}
public void setReader(Reader r) { reader = r; }
public void parse() throws IOException {
txt = new StringBuffer();
ParserDelegator parserDelegator = new ParserDelegator();
parserDelegator.parse(reader, this, true);
}
public void handleText(char[] text, int pos) {
txt.append(text);
}
public String toString() {
return txt.toString();
}
public static void main (String[] argv) {
try {
// the HTML to convert
URL toRead;
if(argv.length==1)
toRead = new URL(argv[0]);
else
toRead = new URL("http://test.com/values.html");
BufferedReader in = new BufferedReader(
new InputStreamReader(toRead.openStream()));
Test d = new Test(in);
d.parse();
in.close();
System.out.println(d.toString());
}
catch (Exception e) {
e.printStackTrace();
}
}
}
而我得到的是這種提取物:
Measured valuestable{font-family:verdana,arial,helvetica,sans-serif;color:#000;font-size:10px;background-color:#fff;}Temperature:24.9°CRelative humidity:48.3%RHDew point:13.3°C
是否有任何機會,只提取值?
25.0
51.0
14.1
謝謝大家的幫助和理解。
真誠的問候。
謝謝大家的幫助。 如所建議的我用JSoup如下:
Document doc;
try {
// need http protocol
doc = Jsoup.connect("http:/test.com/values.html").get();
String text = doc.text();
System.out.println("text : " + text);
Element pending = doc.select("table td:eq(1)").get(0);
Element nextDate = doc.select("table td:eq(1)").get(1);
Element date = doc.select("table td:eq(1)").last();
System.out.println(pending.text() + "\n" + nextDate.text() + "\n" + date.text());
} catch (IOException e) {
e.printStackTrace();
}
}
其結果是這樣的:
23.9°C
52.8%RH
13.7°C
不可能僅提取的值,而不ºC和%RH ?
對於給您帶來的不便,我們深表歉意。
您可以使用JSoup,解析頁面並從特定標記中提取數據 –
非常感謝您的回覆。你能給我一些示例代碼嗎? – rpirez