1. 程式人生 > >iwanghang(一個播音與主持藝術專業、幹過網遊打金工作室,做過海鮮小吃排擋的新手程式設計師)

iwanghang(一個播音與主持藝術專業、幹過網遊打金工作室,做過海鮮小吃排擋的新手程式設計師)

截止到今天20160429最新jar包為jsoup-1.9.1.jar,最新版本下載地址如下:


jsoup: Java HTML parser that makes sense of real-world HTML soup.

jsoup:Java HTML解析器,它是有意義的實際HTML湯。

jsoup is a Java library for working with real-world HTML. It provides a very convenient API for extracting and manipulating data, using the best of DOM, CSS, and jquery-like methods.

jsoup是一個Java庫來處理實際的HTML。它提供了一個非常方便的API來提取和操縱資料,使用最好的DOM,CSS和jquery-like方法。

jsoup implements the WHATWG HTML5 specification (http://whatwg.org/html), and parses HTML to the same DOM as modern browsers do.

jsoup實現WHATWG HTML5規範(http://whatwg.org/html),並解析HTML DOM一樣現代瀏覽器。

* parse HTML from a URL, file, or string

*從一個URL解析HTML,檔案或字串

* find and extract data, using DOM traversal or CSS selectors

*發現和提取資料,使用DOM遍歷或CSS選擇器

* manipulate the HTML elements, attributes, and text

*操作HTML元素、屬性和文字

* clean user-submitted content against a safe white-list, to prevent XSS

*清潔對安全的白名單使用者提交的內容,以防止XSS

* output tidy HTML

*輸出HTML整潔

jsoup is designed to deal with all varieties of HTML found in the wild; from pristine and validating, to invalid tag-soup; jsoup will create a sensible parse tree.

jsoup旨在處理所有HTML中發現的野生品種,從原始和驗證,無效標籤;jsoup將建立一個合理的解析樹。

jsoup runs on Java 1.5 and up.

jsoup執行在Java 1.5以上。

See http://jsoup.org/ for downloads and documentation.

請參閱http://jsoup.org/下載和文件

解析和遍歷一個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的格式是否完整。比如它可以處理:

  • 沒有關閉的標籤 (比如: <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).
  • 一個Element包含一個子節點集合,並擁有一個父Element。他們還提供了一個唯一的子元素過濾列表。

解析一個HTML字串

存在問題

來自使用者輸入,一個檔案或一個網站的HTML字串,你可能需要對它進行解析並取其內容,或校驗其格式是否完整,或想修改它。怎麼辦?jsonu能夠幫你輕鬆解決這些問題

解決方法

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解析為一個新的文件 (Document),引數 baseUri 是用來將相對 URL 轉成絕對URL,並指定從哪個網站獲取文件。如這個方法不適用,你可以使用 方法來解析成HTML字串如上面的示例。.

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

一旦擁有了一個Document,你就可以使用Document中適當的方法或它父類 和Node中的方法來取得相關資料。

解析一個body片斷

問題

假如你有一個HTML片斷 (比如. 一個 div 包含一對 p 標籤; 一個不完整的HTML文件) 想對它進行解析。這個HTML片斷可以是使用者提交的一條評論或在一個CMS頁面中編輯body部分。

辦法

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

說明

parseBodyFragment 方法建立一個空殼的文件,並插入解析過的HTML到body元素中。假如你使用正常的 方法,通常你也可以得到相同的結果,但是明確將使用者輸入作為 body片段處理,以確保使用者所提供的任何糟糕的HTML都將被解析成body元素。

方法能夠取得文件body元素的所有子元素,與doc.getElementsByTag("body")相同。

保證安全Stay safe

假如你可以讓使用者輸入HTML內容,那麼要小心避免跨站指令碼攻擊。利用基於 的清除器和方法來清除使用者輸入的惡意內容。

從一個URL載入一個Document

存在問題

你需要從一個網站獲取和解析一個HTML文件,並查詢其中的相關資料。你可以使用下面解決方法:

解決方法

Document doc = Jsoup.connect("http://example.com/").get();
String title = doc.title();

說明

方法建立一個新的, 和get() 取得和解析一個HTML檔案。如果從該URL獲取HTML時發生錯誤,便會丟擲 IOException,應適當處理。

介面還提供一個方法鏈來解決特殊請求,具體如下:

Document doc = Jsoup.connect("http://example.com")
  .data("query", "Java")
  .userAgent("Mozilla")
  .cookie("auth", "token")
  .timeout(3000)
  .post();
這個方法只支援Web URLs (httphttps 協議); 假如你需要從一個檔案載入,可以使用 代替。

從一個檔案載入一個文件

問題

在本機硬碟上有一個HTML檔案,需要對它進行解析從中抽取資料或進行修改。

辦法

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

說明

baseUri 引數用於解決檔案中URLs是相對路徑的問題。如果不需要可以傳入一個空的字串。

另外還有一個方法 ,它使用檔案的路徑做為baseUri。 這個方法適用於如果被解析檔案位於網站的本地檔案系統,且相關連結也指向該檔案系統。
G M T 語言功能限100個字元 選項 :歷史 :幫助 : 反饋關閉