Jsoup解析并提取 HTML 元素
File input = new File("D:/test.html");
Document doc = Jsoup.parse(input, "UTF-8", "http://www.oschina.net/");
Element content = doc.getElementById("content");
Elements links = content.getElementsByTag("a");
for (Element link : links) {
String linkHref = link.attr("href");
String linkText = link.text();
}
Elements这个对象提供了一系列类似于DOM的方法来查找元素,抽取并处理其中的数据。具体如下:
查找元素
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)获取属性attr(String key, String value)设置属性
attributes()获取所有属性id(), className() and classNames()
text()获取文本内容text(String value) 设置文本内容
html()获取元素内HTMLhtml(String value)设置元素内的HTML内容
outerHtml()获取元素外HTML内容
data()获取数据内容(例如:script和style标签)
tag() and tagName()
操作HTML和文本
append(String html), prepend(String html)
appendText(String text), prependText(String text)
appendElement(String tagName), prependElement(String tagName)
html(String value)
使用选择器语法来查找元素
public static void selector(Document doc) {
Elements links = doc.select("a[href]"); // 带有href属性的a元素
Elements pngs = doc.select("img[src$=.png]");
// 扩展名为.png的图片
Element masthead = doc.select("div.masthead").first();
// class等于masthead的div标签
Elements resultLinks = doc.select("h3.r > a"); // 在h3元素之后的a元素
}
从元素抽取属性,文本和HTML
public static void getAttr(Document doc) {
// "<a href="http://www.jb51.net"><b>www.jb51.net</b></a>"
Element link = doc.select("a").first();// 查找第一个a元素
String text = doc.body().text(); //取得字符串中的文本
String linkHref = link.attr("href"); //取得链接地址
String linkText = link.text(); //取得链接地址中的文本
String linkOuterH = link.outerHtml();
String linkInnerH = link.html(); //取得链接内的html内容
}
要取得一个属性的值,可以使用Node.attr(String key) 方法 对于一个元素中的文本,可以使用Element.text()方法
对于要取得元素或属性中的HTML内容,可以使用Element.html(), 或 Node.outerHtml()方法