91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java jsoup怎么使用

發布時間:2022-01-26 15:22:58 來源:億速云 閱讀:140 作者:iii 欄目:開發技術

今天小編給大家分享一下Java jsoup怎么使用的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

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

Java jsoup怎么使用
前置

引入Jsoup依賴

   org.jsoup   jsoup   1.11.3

使用Jsoup解析HTML

以下代碼是使用Jsoup對html進行解析,這里的html只是一個小測試,可以使用HttpClient請求并獲取響應的HTML,再通過Jsoup完成解析。

這里選擇的是兩個參數的解析,第二個參數為HTML的URL路徑,當我們的HTML中有相對路徑時,我們可以通過URL路徑將相對路徑轉換為絕對路徑。

此外,Jsoup還提供了其他參數的解析,如設置解析超時時間,還可以自定義解析器,設置解析的一些參數,如允許標簽或屬性的大小寫。—— 一般這兩個參數就夠了。

StringBuilder htmlSB = new StringBuilder();
htmlSB.append("")
       .append("")
       .append("標題")
       .append("")
       .append("")
       .append("")
       .append("")
       .append("");
Document document = Jsoup.parse(htmlSB.toString(), "http://www.baidu.com");

解析過程:簡單來說就是按字符不斷遍歷HTML,解析成一個個Element并追加到Document對象。 以下一整塊可以認為是一個Document,…則是一個Element,每個Element包含其父Element(最多1個)和子Elements(可以多個)

...
----...
--------...----...
--------...

比如我們要獲取HTML中所有圖片的鏈接。這里使用的是cssQuery選擇器語法,搜索文檔中img帶有src屬性的Element,再打印圖片路徑(實際情況肯定要對路徑處理,這里偷懶了)。

for (Element element : document.select("img[src]")) {
   System.out.println(element.baseUri() + element.attr("src"));
}

Jsoup還提供給我們類似JavaScript的一些方法,能讓我們方便的篩選出需要的元素。

document.getElementsByTag("");
document.getElementsByClass("");
document.getElementById("");
document.getElementsByAttribute("");

使用Jsoup發送HTTP請求

GET請求

以下兩種方式均可實現GET請求調用,主要兩個方法返回的類型不同,這里將請求返回的HTML打印出來。

String url = "http://www.baidu.com";
Connection.Response response = Jsoup.connect(url).execute();
System.out.println(response.body());

Document document = Jsoup.connect(url).get();
System.out.println(document.html());

攜帶參數的GET請求,這里寫了一個本地接口

@RequestMapping("/user")
@RestController
public class UserController {
   @GetMapping("/myself")
   public String myself(String name, int age) {
       return "姓名:" + name + ",年齡:" + age;
   }
}
String url = "http://localhost:8080/user/myself";
Connection.Response response = Jsoup
       .connect(url)
       .data("name", "張三")
       .data("age", "20")
       .execute();
System.out.println(response.body());
POST請求

攜帶參數的POST請求,這里寫了一個本地接口

@RequestMapping("/user")
@RestController
public class UserController {
   @PostMapping("/login")
   public ResponseVo login(@RequestBody UserLoginReq userLoginReq) {
       return ResponseVo.getSuccess(userLoginReq);
   }
}

注意這里有一個ignoreContentType(true),意思是忽略響應返回的類型,這兒不加會拋出org.jsoup.UnsupportedMimeTypeException異常

String url = "http://localhost:8080/user/login";
Connection connection = Jsoup.connect(url);
connection
       .ignoreContentType(true)
       .header("Content-Type", "application/json")
       .requestBody("{\"username\": \"123123\",\"password\": \"123123\"}");
System.out.println(connection.post().text());
額外請求屬性

除了可以設置請求頭,請求體,參數等,Jsoup還支持設置代理、請求超時、Cookie等。

下面模擬一個請求,請求簡書需要登錄的頁面https://www.jianshu.com/my/paid_notes (1)登錄簡書后,進入到該頁面。 (2)按F12后刷新頁面,請求頭有一個remember_user_token,擁有這個值就可以認為我們已經登錄了簡書 Java jsoup怎么使用

String url = "https://www.jianshu.com/my/paid_notes";
Connection.Response response = Jsoup
       .connect(url)
       .cookie("remember_user_token", "我這兒省略了!!!")
       .execute();
System.out.println(response.body());

如果我們注釋掉這個cookie,那么簡書就會響應給我們一個登錄頁面要求我們進行登錄。

Jsoup提供的另外兩個方法

clean:支持兩個功能,第一個就是講HTML的body體中的相對路徑轉換為絕對路徑,第二個就是可以過濾掉一些HTML標簽和屬性,可以通過使用白名單設置保留的標簽和屬性。

StringBuilder htmlSB = new StringBuilder();
htmlSB.append("")
       .append("")
       .append("標題")
       .append("")
       .append("")
       .append("")
       .append("")
       .append("");
Whitelist whitelist = new Whitelist()
       .addTags("head", "body", "img")
       .addAttributes("img", "src")
       .addProtocols("img", "src", "http", "https");
String html = Jsoup.clean(htmlSB.toString(), "http://www.baidu.com/", whitelist);
System.out.println(html);

打印結果,注意這里是沒有的,因為是對body里面的內容進行處理。

標題"http://www.baidu.com/test.png">

isValid:這個方法是判斷HTML的body是否符合白名單

public static boolean isValid(String bodyHtml, Whitelist whitelist) {
   return new Cleaner(whitelist).isValidBodyHtml(bodyHtml);
}

以上就是“Java jsoup怎么使用”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

浠水县| 张家界市| 金门县| 佛学| 宁陕县| 简阳市| 兴义市| 宁国市| 博爱县| 江口县| 河源市| 西贡区| 胶南市| 淳化县| 莲花县| 康定县| 平定县| 沙田区| 青州市| 宜春市| 驻马店市| 叶城县| 滨海县| 襄汾县| 南涧| 临汾市| 贺兰县| 商南县| 江门市| 凤阳县| 万荣县| 宜良县| 梁山县| 唐海县| 黄大仙区| 红河县| 长白| 稻城县| 防城港市| 涟水县| 中江县|