我想知道在Android上從Internet託管的HTML頁面檢索信息的最佳方法是什麼?Android - 從網站提取數據的選項? (HTML)
比如我希望能夠在每一天的開始從下面的網頁中的文字:
http://www.met.ie/forecasts/sea-area.asp
我已經下載和解析XML文件,但我從來沒有嘗試以前解析來自HTML類型文件的信息。
有解析我想要的信息的本地方法是什麼?
或者我需要第三方庫嗎?
或者我需要尋找到屏幕抓取?
我想知道在Android上從Internet託管的HTML頁面檢索信息的最佳方法是什麼?Android - 從網站提取數據的選項? (HTML)
比如我希望能夠在每一天的開始從下面的網頁中的文字:
http://www.met.ie/forecasts/sea-area.asp
我已經下載和解析XML文件,但我從來沒有嘗試以前解析來自HTML類型文件的信息。
有解析我想要的信息的本地方法是什麼?
或者我需要第三方庫嗎?
或者我需要尋找到屏幕抓取?
如果您解析HTML,不管你怎麼做,你是屏幕抓取。技術從正則表達式到jTidy等第三方庫的運行。唯一的問題是jTidy在Android上工作嗎?我不知道。你必須研究它。
我建議使用正則表達式,編譯它們,並緩存模式對象的性能。
如果你不能得到一個用於數據的適當Web服務API你想,那麼你始終運行筆者改變佈局和移動你的數據,並破壞你的代碼的風險。這就是爲什麼屏幕抓取通常被忽視,只能用作最後的努力。
有解析我想要的信息的本地方法是什麼?
號
或者我需要一個第三方庫?
是。
或者我需要尋找到屏幕抓取?
您正在尋找的操作符合術語「屏幕抓取」,因爲它用於網站。正如我在previous question on this topic中寫的,爲了解析HTML,您使用了HTML解析器。有several open source ones,並且很有可能一個或多個將在Android上工作,只需要很少的修改。
如果你不想去第三方的方式 - 你可以使用webview並注入JavaScript來提取你想要的信息。
例代碼:
WebView webview = new WebView(context);
webView.addJavascriptInterface(new jsInterface() {
public void parseForcast(String html){
// do something with html
}
}, "Foo");
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url){
if (url.equals(FORECAST_URL){
loadUrl("javascript:window.Foo.parseForecast(document.getElementById('content').innerHTML);");
}
});
webview.loadUrl(FORECAST_URL);
只需添加到這個JSoup行之有效於Android – 2011-11-18 10:53:55