Jsoup
- Jsoup 是一款 java 的 HTML 解析器可以直接解析 URL 地址或是 HTML 文本。可以通过 Dom、CSS已经类似于 jQuery 的操作方式提取数据。
 
依赖:
1 2 3 4 5
   | <dependency>     <groupId>org.jsoup</groupId>     <artifactId>jsoup</artifactId>     <version>1.13.1</version> </dependency>
   | 
 
Jsoup 可解析类型:
1 2 3 4 5 6 7 8 9 10 11 12
   | String url = "https://www.baidu.com/";
  Document dom = Jsoup.parse(new URL(url), 3000);
 
 
 
 
 
 
 
 
 
   | 
 
通过URL或文件字符串解析得到的 Document 对象,就是我们可获取数据的操作对象。接下来我们将以这里百度的 dom对象为例 来获取数据。
dom方式获取元素:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
   | 
  Element byId = dom.getElementById("su"); String val = byId.val();  System.out.println("id = "+val);
 
  Element title = dom.getElementsByTag("title").first();  String titleText = title.text();  System.out.println("tag = "+titleText);
 
  Element byClass = dom.getElementsByClass("s-top-left s-isindex-wrap").first();
  String byClassText = byClass.text(); System.out.println("class = "+byClassText);
 
  Element attr = dom.getElementsByAttribute("name").first(); String attrText = attr.text(); System.out.println("href = "+attrText);
  Element attrByValue = dom.getElementsByAttributeValue("name","tj_zhidao").first(); String attrByValueText = attrByValue.text(); System.out.println("attrByValue = "+attrByValueText);
 
  | 
 
获取数据:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
   | 
  System.out.println("元素id为:"+byId.id());
 
  System.out.println("元素的class值为:"+byClass.className());
 
  System.out.println("属性值为:"+attrByValue.attr("name"));
 
  Attributes attributes = byId.attributes();  System.out.println("元素的所有属性与值:"+attributes.toString());
 
 
 
  | 
 
选择器获取元素:
1. 基本选择方式:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
   |  Element selectA = dom.select("a").first(); System.out.println("选择a标签 = "+selectA.className());
 
  Element selectId = dom.select("#su").first(); System.out.println("通过id = "+selectId.val());
 
  Element selectClass = dom.select(".mnav").first(); System.out.println("通过class = "+selectClass.text());
 
  Element selectAttr = dom.select("[name=tj_zhidao]").first(); System.out.println("通过属性 = "+selectAttr.text());
 
  | 
 
2. 高级筛选之组合:
这里不做过多讲解与CSS的选择器类似,只以方式1为例简单介绍一下:
1 2 3 4 5 6 7 8 9
   | 
 
 
 
 
 
  Element first = dom.select("[href=http://news.baidu.com]a").first(); System.out.println(first.text());
 
  |