我们抓取到页面之后,还需要对页面进行解析。可以使用字符串处理工具解析页面,也可以使用正则表达式,但是这些方法都会带来很大的开发成本,所以我们需要使用一款专门解析html页面的技术——JSoup爬虫技术。
一、什么是JSoup?
jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据(简称爬虫)。
二、JSoup的主要功能
1、从一个URL,文件或字符串中解析HTML;
2、使用DOM或CSS选择器来查找、取出数据;
3、可操作HTML元素、属性、文本;
注意:虽然使用JSoup可以替代HttpClient直接发起请求解析数据,但是往往不会这样使用,因为实际开发过程中,需要用到多线程,连接池,代理等方式,而JSoup对这些的支持并不是很好,所以我们一般吧JSoup仅仅作为Html解析工具使用。
三、jsoup中几种常用的对象
1、 Jsoup对象:可以解析html或xml文档
2、 Document:文档对象。指整个HTML文档的源码内容
3、 Elements:元素Element对象的集合。(可以当做Arraylist来使用)
4、 Element:元素对象,元素是节点的子集,所以一个元素也是一个节点
5、 NODE:节点对象,html中包含的内容都可以看成一个节点。节点有很多种类型:属性节点、注释节点、文本节点、元素节点等。解析html内容的过程,其实就是对节点操作的过程
四、JSoup入门案例及其代码
首先配置maven
1、获取html的几种方式
package com.yzh.itcast;
import org.apache.commons.io.FileUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.junit.Test;
import java.io.File;
import java.net.URL;
/**
* 使用JSoup实现页面解析
*/
public class JSoupTest {
@Test
public void testGetDoument() throws Exception {
Document doc = Jsoup.connect("https://www.itcast.cn/").get(); //第一种
// 第二种 Document doc = Jsoup.parse(new URL("https://www.itcast.cn/"), 10000);
// 第三种 Document doc = Jsoup.parse(new File("jsoup.html"), "UTF-8");
// 第四种 String htmlStr = FileUtils.readFileToString(new File("jsoup.html"), "UTF-8");
// Document doc = Jsoup.parse(htmlStr);
System.out.println(doc);
}
}
2、获取节点元素
Element titleElement = doc.getElementsByTag("title").first();
String title = titleElement.text();
System.out.println(title);