问题
您有一个要从中提取数据的HTML文档。您通常知道HTML文档的结构。
解
在将HTML解析为a后,使用类似DOM的方法[Document](https://jsoup.org/apidocs/org/jsoup/nodes/Document.html)
。
File input = new File("/tmp/input.html");
Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/");
Element content = doc.getElementById("content");
Elements links = content.getElementsByTag("a");
for (Element link : links) {
String linkHref = link.attr("href");
String linkText = link.text();
}
描述
元素提供了一系列类似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--)
获取数据内容(例如script
和style
标签)[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-)