2010-09-28 31 views
1

我想知道在Android上從Internet託管的HTML頁面檢索信息的最佳方法是什麼?Android - 從網站提取數據的選項? (HTML)

比如我希望能夠在每一天的開始從下面的網頁中的文字:

http://www.met.ie/forecasts/sea-area.asp

我已經下載和解析XML文件,但我從來沒有嘗試以前解析來自HTML類型文件的信息。

有解析我想要的信息的本地方法是什麼?

或者我需要第三方庫嗎?

或者我需要尋找到屏幕抓取?

+0

只需添加到這個JSoup行之有效於Android – 2011-11-18 10:53:55

回答

2

如果您解析HTML,不管你怎麼做,你是屏幕抓取。技術從正則表達式到jTidy等第三方庫的運行。唯一的問題是jTidy在Android上工作嗎?我不知道。你必須研究它。

我建議使用正則表達式,編譯它們,並緩存模式對象的性能。

如果你不能得到一個用於數據的適當Web服務API你想,那麼你始終運行筆者改變佈局和移動你的數據,並破壞你的代碼的風險。這就是爲什麼屏幕抓取通常被忽視,只能用作最後的努力。

1

有解析我想要的信息的本地方法是什麼?

或者我需要一個第三方庫?

是。

或者我需要尋找到屏幕抓取?

您正在尋找的操作符合術語「屏幕抓取」,因爲它用於網站。正如我在previous question on this topic中寫的,爲了解析HTML,您使用了HTML解析器。有several open source ones,並且很有可能一個或多個將在Android上工作,只需要很少的修改。

2

如果你不想去第三方的方式 - 你可以使用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);