1. 程式人生 > >Jsoup文件--提取資料(使用DOM方法遍歷文件)

Jsoup文件--提取資料(使用DOM方法遍歷文件)

使用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. scriptstyle標籤)
  • tag()tagName()

操作HTML和文字內容

  • append(String html)prepend(String html)
  • appendText(String text)prependText(String text)
  • appendElementt(String tagName)prependElement(String tagName)
  • html(String html)