Jsoup 輸入彙總

jsoup 能夠從包括字符串、URL地址以及本地文件來加載HTML 文檔,並生成Document對象實例。html

  1.  Document對象(一個文檔的對象模型):文檔由多個Elements和TextNodes組成 (以及其它輔助nodes:詳細可查看:nodes package tree). 
    其繼承結構以下:Document繼承Element繼承NodeTextNode繼承 Node.

     2.一個Element包含一個子節點集合,並擁有一個父Element。他們還提供了一個惟一的子元素過濾列表java

1 從字符串中輸入HTML文檔

1.1 解析一個html字符串

使用靜態方法Jsoup.parse(String html) 或 Jsoup.parse(String html, String baseUri)node

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

說明:api

  1. 其解析器可以盡最大可能從你提供的HTML文檔來創見一個乾淨的解析結果,不管HTML的格式是否完整。安全

  2. parse(String html, String baseUri) 這個方法可以將輸入的HTML解析爲一個新的文檔 (Document),參數 baseUri 是用來將相對 URL 轉成絕對URL,並指定從哪一個網站獲取文檔。如這個方法不適用,你可使用 parse(String html) 方法來解析成HTML字符串如上面的示例。cookie

  3. 只要解析的不是空字符串,就能返回一個結構合理的文檔,其中包含(至少) 一個head和一個body元素。post

  4. 一旦擁有了一個Document,你就可使用Document中適當的方法或它父類 Element 和 Node 中的方法來取得相關數據網站

1.2 解析一個body片段

假如你有一個HTML片段 (好比. 一個 div 包含一對 p 標籤; 一個不完整的HTML文檔) 想對它進行解析。這個HTML片段能夠是用戶提交的一條評論或在一個CMS頁面中編輯body部分。可使用Jsoup.parseBodyFragment(String html) 方法.url

String html = "<div><p>Lorem ipsum.</p>";
Document doc = Jsoup.parseBodyFragment(html);
Element body = doc.body();

說明:spa

  1. parseBodyFragment 方法建立一個空殼的文檔,並插入解析過的HTML到body元素中。假如你使用正常的 Jsoup.parse(String html) 方法,一般你也能夠獲得相同的結果,可是明確將用戶輸入做爲 body片斷處理,以確保用戶所提供的任何糟糕的HTML都將被解析成body元素。
  2. Document.body() 方法可以取得文檔body元素的全部子元素,與 doc.getElementsByTag("body")相同。

1.3保證安全Stay safe

假如你可讓用戶輸入HTML內容,那麼要當心避免跨站腳本攻擊。利用基於Whitelist 的清除方法clean(...)來清除用戶輸入的惡意內容。

2 從URL直接加載HTML文檔

從一個網站獲取和解析一個HTML文檔,並查找其中的相關數據,可使用 Jsoup.connect(String url)方法。

Document doc = Jsoup.connect("http://example.com")
  .data("query", "Java")
  .userAgent("Mozilla")
  .cookie("auth", "token")
  .timeout(3000)
  .post();

說明:

  1. connect(String url) 方法建立一個新的 Connection 和 get() 取得和解析一個HTML文件。若是從該URL獲取HTML時發生錯誤,便會拋出 IOException,應適當處理。
  2. Connection 接口還提供一個方法鏈來解決特殊請求,具體以下:

這個方法只支持Web URLs (http 和 https 協議); 假如你須要從一個文件加載,可使用 parse(File in, String charsetName) 代替。

3 從文件中加載HTML文檔

在本機硬盤上有一個HTML文件,須要對它進行解析從中抽取數據或進行修改。可使用靜態 Jsoup.parse(File in, String charsetName, String baseUri) 方法。

File input = new File("/tmp/input.html");
Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/");

說明:

  1. parse(File in, String charsetName, String baseUri) 這個方法用來加載和解析一個HTML文件。如在加載文件的時候發生錯誤,將拋出IOException,應做適當處理。

  2. baseUri參數用於解決文件中URLs是相對路徑的問題。若是不須要能夠傳入一個空的字符串。

  3. 另外還有一個方法parse(File in, String charsetName) 它使用文件的路徑作爲 baseUri。 這個方法適用於若是被解析文件位於網站的本地文件系統,且相關連接也指向該文件系統。

相關文章
相關標籤/搜索