解析URL和文件
-
public void testUrl() throws Exception { // 解析URL地址,参数是url和超时时间 Document doc = Jsoup.parse(new URL("http://www.baidu.com"), 1000); // 使用标签选择器获取title标签内容 String title = doc.getElementsByTag("title").first().text(); System.out.println(title); }
public void testFile() throws Exception { // 解析文件 Document doc = Jsoup.parse(new File("...test.html"), "utf8"); String title = doc.getElementsByTag("title").first().text(); System.out.println(title); }
使用 dom 方式遍历文档
- getElementById
public void testDOM() throws Exception { Document doc = Jsoup.parse(new URL("http://www.baidu.com"), 1000); Element element = doc.getElementById("back"); System.out.println(element.text()); }
- getElementsByTag
Element element = doc.getElementsByTag("a").first(); System.out.println(element.text());
- getElementsByClass
Element element = doc.getElementsByClass("all a_js").first(); System.out.println(element.text());
- getElementsByAttribute
Element element = doc.getElementsByAttribute("XXX").first(); System.out.println(element.text());
- getElementsByAttributeValue
// 参数1是属性名,参数2是属性值 Element element = doc.getElementsByAttributeValue("href", "http://www.baidu.com").first(); System.out.println(element.text());
从元素中获取数据
首先获取元素
Element element = doc.getElementById("back");
- 获取id
System.out.println(element.id());
- 获取className(s)
classNames
得到的是一个Set
,表示该元素不止一个class
System.out.println(element.className());
- 获取属性的值attr
System.out.println(element.attr("id"));
- 获取所有属性attributes
System.out.println(element.attributes());
- 获取文本内容text
System.out.println(element.text());
Selector 选择器组合使用
元素名直接写,id前写#,class前写.
- 元素+id
Element element = doc.select("li#back").first(); System.out.println(element.text());
- 元素+class
Element element = doc.select("li.li_6").first(); System.out.println(element.text());
- 元素+属性名
Element element = doc.select("li[class]").first(); System.out.println(element.text());
- 任意组合
只限于同级
- ancestor child:查找某个元素下级子元素,可跨代
Elements element = doc.select("li a .s_name");
- parent > child:查找父元素的直接子元素
Elements element = doc.select(".fdnav>ul>li");
- parent > *:查找某个父元素所有直接子元素
Elements element = doc.select(".innr>*");