jsoup

什么是Jsoup

Jsoup是用于解析Html,就类似XML解析器用于XML.

jsoup能用来做什么?

  1. 从URL,文件或字符串中刮取并解析HTML
  2. 查找和提取数据,使用DOM遍历或CSS选择器
  3. 操纵HTML元素,属性和文本
  4. 根据安全的白名单清理用户提交的内容,以防止XSS攻击
  5. 输出整洁的HTML

安装Jsoup

<!-- https://mvnrepository.com/artifact/org.jsoup/jsoup -->
<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.12.2</version>
</dependency>

jsoup演示

获取连接标题

		Document document = Jsoup.connect("https://www.pv3.com.cn").get();
		System.out.println(document.title());

获取内容

		Document document = Jsoup.connect("https://www.pv3.com.cn").get();
		System.out.println(document.body());

加载HTML文档

    Document document = Jsoup.parse( new File( "D:/index.html" ) , "utf-8" );
    System.out.println(document.title());

加载字符串HTML

    String html = "<html><head><title>卖肉的程序员</title></head>"
                    + "<body><p>写程序写不下去了,改行卖肉了.</p></body></html>";
    Document document = Jsoup.parse(html);
    System.out.println(document.title());

从html获取href

		Document document = Jsoup.connect("https://www.pv3.com.cn").get();
		System.out.println(document.select("a[href]"));

jsoup模拟请求

		Document doc = Jsoup.connect("https://www.pv3.com.cn")
				.header("Accept", "*/*")
				.header("Accept-Encoding", "gzip, deflate")
				.header("Accept-Language", "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3")
				.header("Referer", "https://www.baidu.com/")
				.header("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0")
				.timeout(5000)
				.get();
    	System.out.println(doc.title());

jsoup支持jquery模式

		Document doc = Jsoup.connect("https://www.pv3.com.cn")
				.get();
		System.out.println(doc.select("#nav-menu").text());
         doc.select("#nav-menu").html();
         //获取id =header 直接子类class='container' , 然后所有子类的含有class = site-name 的集合以此类推
         doc.select("#id > .css1 .css2");
		System.out.println(doc.select("#header > .container .site-name .description").html());