`
snake_hand
  • 浏览: 576776 次
社区版块
存档分类
最新评论

JSoup解析HTML使用笔记(一)

 
阅读更多

学习java有3个多月了,一直想在学习过程中写点什么,把自己的成长历程记录下来,但是一直不知道写些什么。这次我终于下定决心写出自己的第一篇文章,督促自己学习,希望大神勿喷,如果哪位大神有闲心阅读了一下,如有错误,希望能够指出,在下感激不尽,也希望能和像我一样的初学者共同学习进步。

Jsoup是java的一个解析和遍历HTML的API,可以把一个HTML字符串解析成一个Document文档,并且会尽可能的得到一个标准的解析结果。

  1. 会自动补充缺失的结束标记。(eg:"<p>Jsoup<p>Jsoup"会解析为"<p>Jsoup</p><p>Jsoup</p>")
  2. 官方文档说会创建隐式标签,即("<td>Jsoup</td>"会解析为<table><tr><td>Jsoup</td></tr></table>"),但是经验证并不会创建,而是会忽略td标签,解析为("Jsoup");
  3. 会自动创建完整的HTML页面结构,即自动创建<html><head><body>标签。

例如:

public static void main(String[] args){
    String html1="<p>Jsoup<p>LKZERO";
    Document doc=Jsoup.parse(html1); 
    System.out.println(doc.toString());
    System.out.println("--------");
        
    String html2="<td>LKZERO</td><br>" +
        "<tr><td>LKZERO<td></tr><br />" +
        "<table><tr><td>JSOUP</td></tr></table>";
    Document doc2=Jsoup.parse(html2); 
    System.out.println(doc2.toString());
}


得到结果:

<html>
 <head></head>
 <body>
  <p>Jsoup</p>
  <p>LKZERO</p>
 </body>
</html>
--------
<html>
 <head></head>
 <body>
  LKZERO
  <br />LKZERO
  <br />
  <table>
   <tbody>
    <tr>
     <td>JSOUP</td>
    </tr>
   </tbody>
  </table>
 </body>
</html>

Jsoup解析得到的Document文档是由Document,Element,Node和TextNode组成的,其中Document继承Element,Element继承Node,TextNode继承Node。

  • parse()静态方法:Jsoup解析HTML字符串使用parse静态方法,无论HTML字符串是什么内容,都会得到一个Document文档,至少会包含<html><head><body>三个元素。
  • parseBodyFragment()静态方法:经我测试与parse()得到的结果相同,不太明白二者区别。官方文档上说此方法把任何用户输入的HTML都会被解析为body部分,但是我测试得到的结果并不是这样。希望有大神能够指导。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics