问题

您有一个要从中提取数据的HTML文档。您通常知道HTML文档的结构。

在将HTML解析为a后,使用类似DOM的方法[Document](https://jsoup.org/apidocs/org/jsoup/nodes/Document.html)

  1. File input = new File("/tmp/input.html");
  2. Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/");
  3. Element content = doc.getElementById("content");
  4. Elements links = content.getElementsByTag("a");
  5. for (Element link : links) {
  6. String linkHref = link.attr("href");
  7. String linkText = link.text();
  8. }

描述

元素提供了一系列类似DOM的方法来查找元素,并提取和操作它们的数据。DOM getter是上下文的:在父文档上调用它们在文档下找到匹配的元素; 他们在一个子元素上调用了那个孩子下面的元素。通过这种方式,您可以了解所需的数据。

寻找元素

  • [getElementById(String id)](https://jsoup.org/apidocs/org/jsoup/nodes/Element.html#getElementById-java.lang.String-)
  • [getElementsByTag(String tag)](https://jsoup.org/apidocs/org/jsoup/nodes/Element.html#getElementsByTag-java.lang.String-)
  • [getElementsByClass(String className)](https://jsoup.org/apidocs/org/jsoup/nodes/Element.html#getElementsByClass-java.lang.String-)
  • [getElementsByAttribute(String key)](https://jsoup.org/apidocs/org/jsoup/nodes/Element.html#getElementsByAttribute-java.lang.String-) (及相关方法)
  • 元素的兄弟姐妹:[siblingElements()](https://jsoup.org/apidocs/org/jsoup/nodes/Element.html#siblingElements--)[firstElementSibling()](https://jsoup.org/apidocs/org/jsoup/nodes/Element.html#firstElementSibling--)[lastElementSibling()](https://jsoup.org/apidocs/org/jsoup/nodes/Element.html#lastElementSibling--)[nextElementSibling()](https://jsoup.org/apidocs/org/jsoup/nodes/Element.html#nextElementSibling--)[previousElementSibling()](https://jsoup.org/apidocs/org/jsoup/nodes/Element.html#previousElementSibling--)
  • 图:[parent()](https://jsoup.org/apidocs/org/jsoup/nodes/Node.html#parent--)[children()](https://jsoup.org/apidocs/org/jsoup/nodes/Element.html#children--)[child(int index)](https://jsoup.org/apidocs/org/jsoup/nodes/Element.html#child-int-)

    元素数据

  • [attr(String key)](https://jsoup.org/apidocs/org/jsoup/select/Elements.html#attr-java.lang.String-)获取和[attr(String key, String value)](https://jsoup.org/apidocs/org/jsoup/select/Elements.html#attr-java.lang.String-java.lang.String-)设置属性

  • [attributes()](https://jsoup.org/apidocs/org/jsoup/nodes/Node.html#attributes--) 获得所有属性
  • [id()](https://jsoup.org/apidocs/org/jsoup/nodes/Element.html#id--)[className()](https://jsoup.org/apidocs/org/jsoup/nodes/Element.html#className--)[classNames()](https://jsoup.org/apidocs/org/jsoup/nodes/Element.html#classNames--)
  • [text()](https://jsoup.org/apidocs/org/jsoup/select/Elements.html#text--)获取和[text(String value)](https://jsoup.org/apidocs/org/jsoup/nodes/TextNode.html#text-java.lang.String-)设置文本内容
  • [html()](https://jsoup.org/apidocs/org/jsoup/select/Elements.html#html--)获取和[html(String value)](https://jsoup.org/apidocs/org/jsoup/select/Elements.html#html-java.lang.String-)设置内部HTML内容
  • [outerHtml()](https://jsoup.org/apidocs/org/jsoup/select/Elements.html#outerHtml--) 获取外部HTML值
  • [data()](https://jsoup.org/apidocs/org/jsoup/nodes/Element.html#data--)获取数据内容(例如scriptstyle标签)
  • [tag()](https://jsoup.org/apidocs/org/jsoup/nodes/Element.html#tag--)[tagName()](https://jsoup.org/apidocs/org/jsoup/nodes/Element.html#tagName--)

    处理HTML和文本

  • [append(String html)](https://jsoup.org/apidocs/org/jsoup/select/Elements.html#append-java.lang.String-)[prepend(String html)](https://jsoup.org/apidocs/org/jsoup/select/Elements.html#prepend-java.lang.String-)

  • [appendText(String text)](https://jsoup.org/apidocs/org/jsoup/nodes/Element.html#appendText-java.lang.String-)[prependText(String text)](https://jsoup.org/apidocs/org/jsoup/nodes/Element.html#prependText-java.lang.String-)
  • [appendElement(String tagName)](https://jsoup.org/apidocs/org/jsoup/nodes/Element.html#appendElement-java.lang.String-)[prependElement(String tagName)](https://jsoup.org/apidocs/org/jsoup/nodes/Element.html#prependElement-java.lang.String-)
  • [html(String value)](https://jsoup.org/apidocs/org/jsoup/select/Elements.html#html-java.lang.String-)