问题:

由于android的WebView等相关类没有提供解析html网页内容的接口,我们想要获取网页的内容并解析出我们想要的元素内容,用android的固有API是没办法了。

这里我提供两种解析html思路:第一种,使用第三方解析html库;第二种,使用JAVA与JS回调,通过JS解析html。


之前研究了一下htmlparser这个开源库,但是发现和android提供的库有冲突,但其在纯java应用程序下是可行的。

htmlparser下载地址:http://htmlparser.sourceforge.net/


那么继续寻找,是否还有更适合android的HTML解析库,功夫不负有心人,还是找到一款比较好的开源库,这就是jsoup。

jsoup 是一款 Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于JQuery的操作方法来取出和操作数据。该版本包含一个支持 HTML5 的解析器分支,可确保跟现在的浏览器一样解析 HTML 的方法,同时降低了解析的时间和内存的占用。

可以使用类似DOM的方法来解析一个网页,比如说,我已经下载了一个网页到本地,保存为input.html,那么通过下面的代码,我们可以得到id为content的DOM中,所有的超链接。字符串linkHref得到的是该链接的链接地址,字符串linkText得到的是该链接的文本描述。


jsoup下载地址:http://jsoup.org/

jsoup github地址:https://github.com/scrylove/jsoup

jsoup 入门:http://blog.csdn.net/zjx409/article/details/23375565

File input = new File("/tmp/input.html"); Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/");  Element content = doc.getElementById("content"); Elements links = content.getElementsByTag("a"); for (Element link : links) {   String linkHref = link.attr("href");   String linkText = link.text(); } File input = new File("/tmp/input.html");Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/");Element content = doc.getElementById("content");Elements links = content.getElementsByTag("a");for (Element link : links) {  String linkHref = link.attr("href");  String linkText = link.text();}


还有很多其他的方法用于在各种不同情况下解析HTML。这里就不一一列举了,有兴许的同学可以自己去研究一下。


至于第二种思路嘛,这里不再罗嗦,JAVA和JS互调应该大家都会,至于JS解析html那就交给WEB前端开发人员吧,我们安卓客户端嘛,只需要得到他们解析完成,回调给我们结果就行。

课参考这篇文章:http://veikr.com/201106/android_webview_content-html.html

更多相关文章

  1. Android WebView 远程网页 加载本地资源js/html/css
  2. Android之UI学习篇五:AutoCompleteTextView自动完成输入内容
  3. android从不同的layout添加tab页内容_tabhost
  4. TextView内容太长怎么办?
  5. Android获取Mac地址,支持android Q
  6. [置顶] android 抽屉效果,内容GridView来实现单行滑动
  7. Android-->获取所有联系人以及所有的字段(联系人头像,邮箱,地址,
  8. Android查看网页源码与开启子线程
  9. Android调用系统短信发送界面并预设接收号码、短信内容

随机推荐

  1. 技术总结之-Android开发
  2. Android(安卓)init 启动过程分析
  3. Android设置状态栏字体颜色
  4. Android自动化构建之Ant多渠道打包实践(下
  5. 关于android内核从linux内核分支上除名
  6. 认清Android(安卓)Studio下的Gradle是什
  7. Android真机测试,连接到本地服务器的方法
  8. Android导出lib时资源id的问题
  9. Android USB串口开发
  10. Android(安卓)使用 aidl 文件创建服务示