Java爬虫之 Jsoup 的使用
解析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,表示该元素不止一个classSystem.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>*");
没有修不好的电脑

浙公网安备 33010602011771号