Jsoup入門-解析和遍曆一個html文檔

來源:互聯網
上載者:User

標籤:des   style   blog   http   java   color   

解析和遍曆一個HTML文檔

如何解析一個HTML文檔:

String html = "<html><head><title>First parse</title></head>"  + "<body><p>Parsed HTML into a doc.</p></body></html>";Document doc = Jsoup.parse(html);

(更詳細內容可查看 解析一個HTML字串.)

其解析器能夠盡最大可能從你提供的HTML文檔來創見一個乾淨的解析結果,無論HTML的格式是否完整。比如它可以處理:

  • 沒有關閉的標籤 (比如: <p>Lorem <p>Ipsum parses to <p>Lorem</p> <p>Ipsum</p>)
  • 隱式標籤 (比如. 它可以自動將 <td>Table data</td>封裝成<table><tr><td>?)
  • 建立可靠的文檔結構(html標籤包含head 和 body,在head只出現恰當的元素)
一個文檔的物件模型
  • 文檔由多個Elements和TextNodes組成 (以及其它輔助nodes:詳細可查看:nodes package tree).
  • 其繼承結構如下:Document繼承Element繼承NodeTextNode繼承 Node.
  • 一個Element包含一個子節點集合,並擁有一個父Element。他們還提供了一個唯一的子項目過濾列表。
資料幫浦

  你有一個HTML文檔,你想從中提取資料。而且你知道一般的HTML文檔的結構。可用類似dom方法解析HTML文檔。

 1     /** 2      * 擷取htmlElement元素 3      * @author bling 4      * @throws IOException  5      * @create Date:2014-07-13 6      */ 7     @Test 8     public void getDataElement() throws IOException{ 9         File input = new File("tmp/input.html");10         Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/");11         12         Element content = doc.getElementById("content");13         Elements links = content.getElementsByTag("a");14         for(Element link : links){15             String linkHref = link.attr("href");16             String linkText = link.text();17             System.out.println("linkHref:"+linkHref+"------"+"linkText:"+linkText);18         }19     }

Elements 提供類似尋找Element的方法,並可提取操作資料,DOM對象為上下文:根據父親Document尋找匹配之下的document,並根據找到的document尋找其下的孩子項目,使用這種方式可尋找你想要的資料。

  • 擷取Elements的方法
  1. getElementById(String id)
  2. getElementsByTag(String tag)
  3. getElementsByClass(String className)
  4. getElementsByAttribute(String key) (and related methods)
  5. Element siblings: siblingElements()firstElementSibling()lastElementSibling();nextElementSibling()previousElementSibling()
  6. Graph: parent()children()child(int index)
  • 擷取Element資料的方法
  1. attr(String key) to get and attr(String key, String value) to set attributes
  2. attributes() to get all attributes
  3. id()className() and classNames()
  4. text() to get and text(String value) to set the text content
  5. html() to get and html(String value) to set the inner HTML content
  6. outerHtml() to get the outer HTML value
  7. data() to get data content (e.g. of script and style tags)
  8. tag() and tagName()
  • 操作html和text的方法
  1. append(String html)prepend(String html)
  2. appendText(String text)prependText(String text)
  3. appendElement(String tagName)prependElement(String tagName)
  4. html(String value)
  • 資料幫浦:Selector syntax(使用選取器文法,參考)

GitHub例子代碼:https://github.com/Java-Group-Bling/Jsoup-learn

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.