Jsoup文件--提取資料(使用DOM方法遍歷文件)
阿新 • • 發佈:2018-12-12
使用DOM方法遍歷文件
問題
想要從HTML文件中提取資料(通常是瞭解該HTML文件結構的)。
解決方案
在將HTML解析成Document
後使用類似於操作DOM的方法。
File input = new File("/tmp/input.html"); Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/"); Element content = doc.getElementById("content"); Element links = doc.getElementByTag("a"); for (Element link : links) { String linkHref = link.attr("href"); String linkText = link.text(); }
描述
Elements物件提供一系列類似於操作DOM的方法來查詢元素、提取和操作其中的資料。DOM getters方法是上下文相關的,在父級DOM上呼叫可以獲取到文件下對應匹配的元素;在子級元素上呼叫可以獲取到子元素下的元素。可以通過這種方式篩選出想要的資料。
查詢元素:
getElementById(String id)
getElementsByTag(String tag)
getElementsByClass(String className)
getElementsByAttribute(String key)
(和相關的方法)- 相鄰元素獲取:
siblingElements()
、firstElementSibling()
lastElementSibling()
、nextElementSibling()
、previousElementSibling()
- 譜系:
parent()
、children()
、child(int index)
操作元素中的資料
- 獲取屬性:
attr(String key)
;設定屬性:attr(String key, String value)
- 獲取所有屬性:
attributes()
id()
,className()
,classNames()
- 獲取文字內容:
text()
;設定文字內容:text(String value)
- 獲取元素內HTML:
html()
;設定元素內HTML:html(String value)
- 獲取元素外部HTML:
outerHtml()
- 獲取資料內容:
data()
(e.g.script
和style
標籤) tag()
、tagName()
操作HTML和文字內容
append(String html)
、prepend(String html)
appendText(String text)
、prependText(String text)
appendElementt(String tagName)
、prependElement(String tagName)
html(String html)