我想知道在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