標籤: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
繼承Node
. TextNode
繼承 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尋找其下的孩子項目,使用這種方式可尋找你想要的資料。
getElementById(String id)
getElementsByTag(String tag)
getElementsByClass(String className)
getElementsByAttribute(String key)
(and related methods)
- Element siblings:
siblingElements()
, firstElementSibling()
, lastElementSibling()
;nextElementSibling()
, previousElementSibling()
- Graph:
parent()
, children()
, child(int index)
attr(String key)
to get and attr(String key, String value)
to set attributes
attributes()
to get all attributes
id()
, className()
and classNames()
text()
to get and text(String value)
to set the text content
html()
to get and html(String value)
to set the inner HTML content
outerHtml()
to get the outer HTML value
data()
to get data content (e.g. of script
and style
tags)
tag()
and tagName()
append(String html)
, prepend(String html)
appendText(String text)
, prependText(String text)
appendElement(String tagName)
, prependElement(String tagName)
html(String value)
- 資料幫浦:Selector syntax(使用選取器文法,參考)
GitHub例子代碼:https://github.com/Java-Group-Bling/Jsoup-learn