2010-09-28 95 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);