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 (http
和https
協議); 假如你需要從一個檔案載入,可以使用 代替。
從一個檔案載入一個文件
問題
在本機硬碟上有一個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個字元 選項 :歷史 :幫助 : 反饋關閉