溫馨提示×

溫馨提示×

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

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

jsoup框架如何使用

發布時間:2023-05-09 17:10:44 來源:億速云 閱讀:415 作者:iii 欄目:開發技術

Jsoup框架如何使用

目錄

  1. 簡介
  2. 安裝與配置
  3. 基本用法
  4. 高級用法
  5. 實戰案例
  6. 常見問題與解決方案
  7. 總結

簡介

Jsoup 是一個用于處理 HTML 的 Java 庫。它提供了一個非常方便的 API,用于提取和操作數據,使用 DOM、CSS 和類似 jQuery 的方法。Jsoup 實現了 WHATWG HTML5 規范,并將 HTML 解析為與現代瀏覽器相同的 DOM。

安裝與配置

Maven 依賴

<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.14.3</version>
</dependency>

Gradle 依賴

implementation 'org.jsoup:jsoup:1.14.3'

手動下載

你可以從 Jsoup 官方網站 下載最新的 JAR 文件,并將其添加到你的項目中。

基本用法

解析HTML文檔

String html = "<html><head><title>First parse</title></head>"
  + "<body><p>Parsed HTML into a doc.</p></body></html>";
Document doc = Jsoup.parse(html);

選擇元素

Element element = doc.select("p").first();

獲取元素內容

String text = element.text();
String html = element.html();

修改元素內容

element.text("New text");
element.html("<b>New HTML</b>");

添加和刪除元素

element.append("<p>New paragraph</p>");
element.prepend("<p>New paragraph</p>");
element.remove();

高級用法

處理表單

Connection.Response loginForm = Jsoup.connect("http://example.com/login")
    .method(Connection.Method.GET)
    .execute();

Document loginDoc = loginForm.parse();
Element form = loginDoc.select("form").first();
String csrfToken = form.select("input[name=csrf_token]").val();

Connection.Response loginResponse = Jsoup.connect("http://example.com/login")
    .data("csrf_token", csrfToken)
    .data("username", "myUsername")
    .data("password", "myPassword")
    .cookies(loginForm.cookies())
    .method(Connection.Method.POST)
    .execute();

處理Cookies

Connection.Response response = Jsoup.connect("http://example.com")
    .method(Connection.Method.GET)
    .execute();

Map<String, String> cookies = response.cookies();

處理重定向

Connection.Response response = Jsoup.connect("http://example.com")
    .followRedirects(true)
    .execute();

處理代理

Connection.Response response = Jsoup.connect("http://example.com")
    .proxy("proxy.example.com", 8080)
    .execute();

處理SSL

Connection.Response response = Jsoup.connect("https://example.com")
    .validateTLSCertificates(false)
    .execute();

實戰案例

爬取網頁數據

Document doc = Jsoup.connect("http://example.com").get();
Elements newsHeadlines = doc.select("#mp-itn b a");
for (Element headline : newsHeadlines) {
    System.out.println(headline.attr("title"));
    System.out.println(headline.absUrl("href"));
}

自動化測試

Document doc = Jsoup.connect("http://example.com").get();
Element form = doc.select("form").first();
Element input = form.select("input[name=username]").first();
input.val("testuser");

數據清洗

String dirtyHTML = "<p><a href='http://example.com/'><b>Example</b></a></p>";
String cleanHTML = Jsoup.clean(dirtyHTML, Whitelist.basic());

常見問題與解決方案

問題1:如何處理動態加載的內容?

解決方案:使用 Selenium 或其他瀏覽器自動化工具來加載頁面,然后將頁面源代碼傳遞給 Jsoup 進行解析。

問題2:如何處理復雜的表單?

解決方案:使用 Jsoup 的 Connection API 來模擬表單提交,并處理 CSRF 令牌等安全機制。

問題3:如何處理大量數據?

解決方案:使用多線程或分布式爬蟲框架來提高數據處理的效率。

總結

Jsoup 是一個功能強大且易于使用的 Java 庫,適用于各種 HTML 處理任務。通過本文的介紹,你應該能夠掌握 Jsoup 的基本用法和高級技巧,并能夠將其應用到實際項目中。希望本文對你有所幫助,祝你在使用 Jsoup 的過程中取得成功!

向AI問一下細節

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

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女