Android对HTML的处理

来源:互联网 发布:淘宝数据包怎么导入 编辑:程序博客网 时间:2024/05/01 20:24

官网:http://jsoup.org/

http://www.ibm.com/developerworks/cn/java/j-lo-jsouphtml/index.html

http://www.open-open.com/jsoup/parsing-a-document.htm

http://www.cnblogs.com/mooncher/archive/2012/09/18/2690806.html 【灰常好】

http://www.blogjava.net/zjusuyong/articles/304788.html 【Http深入理解】

http://weiweiabc109.blog.163.com/blog/static/2835722012111775546750/ 【http header头】

1 解析HTML

在Android应用程序开发过程中,经常需要解析HTML文档,特别是那类通过“爬网站”抓取数据的应用,比如天气预报。Java常用的解析HTML文档的方法有以下几种:

使用正则表达式来抽取数据。

以纯字符串查找定位来实现。

使用HTML Parser解析器。

使用Jsoup解析器。

在Android平台上推荐使用Jsoup解析器来解析HTML文档。Jsoup既可以通过一个URL网址,也可以通过存储HTML脚本的文件或者存储HTML脚本的字符串作为数据源,然后通过DOM、CSS选择器来查找、抽取数据。

使用Jsoup解析字符串形式的HTML文件的方法如下:

  1. // 定义需要解析的HTML字符串  
  2. String html = "<html><head><title>First parse</title></head>" 
  3.       + "<body><p>Parsed HTML into a doc.</p></body></html>";  
  4. // 将字符串解析之后放到Document对象中  
  5. Document doc = Jsoup.parse(html);  
  6. }  
  7. 下面是一个具体的解析列子,使用Jsoup从HTML文件中提取出超链接、超链接文本、页面描述等内容。  
  8. // 需要解析的HTML字符串  
  9. String html = "<p>An <a href='http:// example.com/'><b>example</b></a> link.</p>";  
  10. // 保存到Document对象中  
  11. Document doc = Jsoup.parse(html);  
  12. // 得到第一个a标签的超链接  
  13. Element link = doc.select("a").first();  
  14. // 取出HTML字符串中的文本内容  
  15. // 这里test的值为 An example link  
  16. String text = doc.body().text();  
  17. // 获取属性为href的字符串  
  18. // 这里linkHref的值为"http:// example.com/"  
  19. String linklinkHref = link.attr("href");  
  20. // 获取a标签内部的纯文本  
  21. // linkText为 "example"  
  22. String linklinkText = link.text();  
  23. // 获取整个a标签里面的字符串  
  24. // 这里linkOuterH的值为<a href="http:// example.com"><b>example</b></a> 
  25. String linklinkOuterH = link.outerHtml();  
  26. // 获取a标签内部(不包含a标签)的全部字符串  
  27. // 这里linkInnerH的值为<b>example</b> 
  28. String linklinkInnerH = link.html(); 

Jsoup还可以使用Whitelist()方法把不规范的HTML格式整理为规范格式,Whitelist方法定义了哪些HTML的元素和属性可以保留,其他的全部会被删除掉。Whitelist.basic()方法允许通过的文本节点为:a、b、blockquote、br、cite、code、dd、dl、dt、em、i、li、ol、p、pre、q、small、strike、strong、sub、sup、u、ul,以及相应的属性,不允许图片通过。

具体的使用方法如下:

  1. String unsafe =  
  2.       "<p><a href='http:// example.com/' onclick='stealCookies()'>Link</a></p>";  
  3. // 调用clean方法整理不标准的代码  
  4. String safe = Jsoup.clean(unsafe, Whitelist.basic());  
  5. // safe为<p><a href="http:// example.com/" rel="nofollow">Link</a></p> 

原创粉丝点击