代码改变世界

Jsoup解析html入门2

2016-07-30 21:02  toFind_U  阅读(84)  评论(0)    收藏  举报

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()方法