Jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。
我们在爬虫采集网页领域,主要作用是 用HttpClient获取到网页后,具体的网页提取需要的信息的时候 ,就用到Jsoup,Jsoup可以使用强大的类似Jquery,css选择器,来获取需要的数据。
<!-- jsoup 依赖 -->
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.11.3</version>
</dependency>
以下为简单使用Jsoup进行模拟登录然后获取到cookie再调用接口获取数据的过程:
HashMap<String, String> paramsMap = new HashMap<>();
try {
//账户密码
paramsMap.put("account","admin");
paramsMap.put("password","password");
//需要登录的网页地址提交表单进行登录获取cookie
Connection connect = Jsoup.connect("https://test/user/login");
Connection.Response response = connect
.userAgent("Mozilla")
.data(paramsMap)
.method(Connection.Method.POST)
.timeout(50000)
.ignoreContentType(true)
.execute();
if(response.statusCode() == 200){
//使用上面的cookie 获取数据接口
Connection.Response listResponse = Jsoup.connect("https://test/list")
.userAgent("Mozilla")
.cookies(response.cookies())
.method(Connection.Method.GET)
.timeout(50000)
.ignoreContentType(true)
.execute();
Document document = listResponse.parse();
JSONObject result = JSONObject.parseObject(document.select("body").text());