Jsoup-解析HTML工具(簡單爬蟲工具)

  • 2019 年 10 月 22 日
  • 筆記

Jsoup-解析HTML工具(簡單爬蟲工具)

一、簡介

​ jsoup 是一款Java 的HTML解析器,可直接解析某個URL地址、HTML文本內容。它提供了一套非常省力的API,可通過DOM,CSS以及類似於jQuery的操作方法來取出和操作數據。官網 中文文檔

​ 在爬蟲的時候,當我們用HttpClient之類的框架,獲取到網頁源碼之後,需要從網頁源碼中取出我們想要的內容,就可以使用jsoup這類HTML解析器了。可以非常輕鬆的實現。

​ jsoup也支援從某個地址直接去爬取網頁源碼,目前支援HTTP,HTTPS協議。

二、功能

1)從一個URL,文件或字元串中解析HTML

2)使用DOM或CSS選擇器來查找、取出數據

3)可操作HTML元素、屬性、文本

注意:jsoup是基於MIT協議發布的,可放心使用於商業項目。

三、使用

1、解析HTML

被解析的HTML可以是一個HTML的字元串,可以是一個URL,可以是一個文件。

org.jsoup.Jsoup把輸入的HTML轉換成一個org.jsoup.nodes.Document對象,然後從Document對象中取出想要的元素。

org.jsoup.nodes.Document繼承了org.jsoup.nodes.Element,Element又繼承了org.jsoup.nodes.Node類。裡面提供了豐富的方法來獲取HTML的元素。

從url獲取HTML解析

1.Get請求

Document getDocument = Jsoup.connect("http://www.baidu.com").get();

2.Post請求

Document postDocument = Jsoup.connect("http://exmple.com")                  .data("query", "java")                  .userAgent("Mozilla")                  .cookie("auth", "token")                  .timeout(3000)                  .post();

1.DOM獲取元素

//通過id來獲取  getElementById(String id)  //通過標籤名字來獲取  getElementsByTag(String tagName)  //通過類名來獲取  getElementsByClass(String className)  //通過屬性名字來獲取  getElementsByAttribute(String key)  //通過指定的屬性名字,屬性值來獲取  getElementsByAttributeValue(String key, String value)  //獲取所有元素  getAllElements()

2.通過類似於css或jQuery的選擇器來查找元素

Element類的方法:

public Elements select(String cssQuery)

獲取百度搜索按鈕value內容

String val = getDocument.select("#su").val();

或者

String su = getDocument.body().getElementById("su").val();

還有更多獲取元素的方法,建議還是直接看官方文檔,畢竟那才是最幹活的,我這裡只是簡單入門。