Jsoup庫和Apache HttpClient庫有什么區別?

JsoupApache HttpClient 是兩個功能不同的庫,它們在 Java 開發中被廣泛使用,但用途和功能有明顯的區別:

Jsoup

  • 用途Jsoup 是一個用于解析 HTML 文檔的庫。它提供了非常方便的方法來抓取和解析網頁內容,提取和操作數據,如獲取網頁中的文本、圖片、鏈接等。

  • 功能

    • 解析 HTML:可以解析 HTML 文檔,無論是從字符串、文件還是通過 URL 獲取的 HTML 內容。

    • 提取數據:通過 CSS 選擇器或 DOM 操作來提取頁面中的數據。

    • 修改 HTML:可以修改 HTML 文檔的內容,例如添加、刪除或修改標簽和屬性。

    • 抓取網頁:可以直接通過 URL 抓取網頁內容,并進行解析。

  • 示例代碼

    java
    import org.jsoup.Jsoup;
    import org.jsoup.nodes.Document;
    import org.jsoup.nodes.Element;
    import org.jsoup.select.Elements;public class JsoupExample {public static void main(String[] args) throws Exception {// 抓取網頁Document doc = Jsoup.connect("https://example.com").get();// 提取標題String title = doc.title();System.out.println("Title: " + title);// 提取所有鏈接Elements links = doc.select("a[href]");for (Element link : links) {System.out.println("Link: " + link.attr("href"));}}
    }

Apache HttpClient

  • 用途Apache HttpClient 是一個用于發送 HTTP 請求的庫。它提供了豐富的功能來處理 HTTP 協議,包括發送 GET、POST、PUT、DELETE 等請求,處理響應,管理 cookies 和會話等。

  • 功能

    • 發送 HTTP 請求:可以發送各種類型的 HTTP 請求,并處理響應。

    • 管理會話:支持 cookies 和會話管理,可以處理登錄、認證等操作。

    • 自定義請求:可以自定義請求頭、請求體等,以滿足復雜的請求需求。

    • 異步請求:支持異步請求,可以提高程序的性能。

  • 示例代碼

    java
    import org.apache.http.client.methods.CloseableHttpResponse;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.util.EntityUtils;public class HttpClientExample {public static void main(String[] args) throws Exception {// 創建 HttpClient 實例try (CloseableHttpClient httpClient = HttpClients.createDefault()) {// 創建 HttpGet 請求HttpGet request = new HttpGet("https://example.com");// 發送請求try (CloseableHttpResponse response = httpClient.execute(request)) {// 獲取響應內容String content = EntityUtils.toString(response.getEntity());System.out.println("Content: " + content);}}}
    }

主要區別

  • 功能定位

    • Jsoup 主要用于解析 HTML 文檔,提取和操作數據。

    • Apache HttpClient 主要用于發送 HTTP 請求,處理 HTTP 協議。

  • 使用場景

    • 如果你需要抓取網頁內容并解析 HTML,Jsoup 是一個很好的選擇。

    • 如果你需要發送 HTTP 請求,處理復雜的 HTTP 協議,Apache HttpClient 是一個強大的工具。

  • 依賴關系

    • Jsoup 可以獨立使用,用于解析 HTML。

    • Apache HttpClient 通常用于發送 HTTP 請求,獲取網頁內容后,可以結合 Jsoup 進行解析。

結合使用

在實際開發中,JsoupApache HttpClient 可以結合使用。例如,你可以使用 Apache HttpClient 發送 HTTP 請求獲取網頁內容,然后使用 Jsoup 解析這些內容。

java

import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;public class CombinedExample {public static void main(String[] args) throws Exception {// 創建 HttpClient 實例try (CloseableHttpClient httpClient = HttpClients.createDefault()) {// 創建 HttpGet 請求HttpGet request = new HttpGet("https://example.com");// 發送請求try (CloseableHttpResponse response = httpClient.execute(request)) {// 獲取響應內容String content = EntityUtils.toString(response.getEntity());// 使用 Jsoup 解析內容Document doc = Jsoup.parse(content);// 提取標題String title = doc.title();System.out.println("Title: " + title);}}}
}

通過結合使用 JsoupApache HttpClient,你可以更靈活地處理網頁抓取和數據解析的任務。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/81700.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/81700.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/81700.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

騰訊云存儲原理

我們來詳細展開你提到的兩個核心結構概念: 一、“基于分布式文件系統 對象存儲技術” 是什么? 1. 分布式文件系統(DFS)基礎 分布式文件系統是一種支持將數據分布在多個存儲節點上、并對上層用戶透明的文件系統。騰訊云COS雖然是…

python fastapi + react, 寫一個圖片 app

1. 起因, 目的: 上廁所的時候,想用手機查看電腦上的圖片,但是又不想點擊下載。此app 應運而生。 2. 先看效果 單擊圖片,能放大圖片 3. 過程: 過程很枯燥。有時候, 有一堆新的想法。 但是做起來太麻煩,…

Kubernetes控制平面組件:Kubelet詳解(五):切換docker運行時為containerd

云原生學習路線導航頁(持續更新中) kubernetes學習系列快捷鏈接 Kubernetes架構原則和對象設計(一)Kubernetes架構原則和對象設計(二)Kubernetes架構原則和對象設計(三)Kubernetes控…

QT6 源(111):閱讀與注釋菜單欄 QMenuBar,進行屬性與成員函數測試,信號與槽函數測試,并給出源碼

(1) (2) (3) (4) (5) (6) (7)以下源代碼來自于頭文件 qmenubar . h : #ifndef QMENUBAR_H #defi…

Leetcode 3552. Grid Teleportation Traversal

Leetcode 3552. Grid Teleportation Traversal 1. 解題思路2. 代碼實現 題目鏈接:3552. Grid Teleportation Traversal 1. 解題思路 這一題的話核心就是一個廣度優先遍歷,我們只需要從原點開始,一點點考察其所能到達的位置,直至…

2023CCPC河南省賽暨河南邀請賽個人補題ABEFGHK

Dashboard - 2023 CCPC Henan Provincial Collegiate Programming Contest - Codeforces 過題難度:A H F G B K E 銅獎: 2 339 銀獎: 3 318 金獎: 5 523 A: 直接模擬 // Code Start Here int t;cin >> t;while(t-…

如何用Python批量解壓ZIP文件?快速解決方案

如何用Python批量解壓ZIP文件?快速解決方案 文章目錄 **如何用Python批量解壓ZIP文件?快速解決方案**代碼結果詳細解釋 話不多說,先上干貨!!! 代碼 import os import zipfiledef unzip_file(dir_path: str…

Spring Boot 的高級特性與經典的設計模式應用

目錄 1. 設計模式在 Spring Boot 中的應用 1.1 單例模式:Bean 管理與全局實例 1.1.1 Spring 中的單例 Bean 1.1.2 自定義單例實現 1.1.3 單例模式的優勢 1.2 工廠模式:動態創建 Bean 1.2.1 Spring 的工廠方法 1.2.2 自定義工廠類 1.2.3 工廠模式…

在Excel中使用函數公式時,常見錯誤對應不同的典型問題

在Excel中使用函數公式時,常見錯誤對應不同的典型問題 1. #DIV/0!(除以零錯誤)2. #N/A(值不可用)3. #NAME?(名稱錯誤)4. #NULL!(空交集錯誤)5. #NUM!(數值錯…

【cursor疑惑】cursor續杯后使用agent對話時,提示“需要pro或商業訂閱的用戶才能使用“

背景 cursor的pro會員體驗過期了,想再次體驗deepseek、Claude等agent對話提示:“免費版本不可以使用agent對話功能(英文忘記截圖了,大意是這樣)”。 處理方法 Step-1:再次續杯cursor的pro會員14天體驗 詳情,見:【c…

解決qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed

可以參考:解決qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed-CSDN博客 講的是程序執行目錄下可能缺少了: libssl-1_1-x64.dll 和 libcrypto-1_1-x64.dll 庫文件,將其復制到可執行文件exe的同級目錄下即可…

白楊SEO:不到7天,白楊SEO博客網站百度搜索顯示和排名恢復正常!順帶說說上海線下GEO聚會分享和播客紅利

大家好,我是白楊SEO,專注SEO十年以上,全網SEO流量實戰派,AI搜索優化研究者。 5月開始,明顯就忙起來了,不管是個人陪跑還是企業顧問,不管是需要傳統SEO還是新媒體流量,還是當下這個A…

FART 自動化脫殼框架簡介與脫殼點的選擇

版權歸作者所有,如有轉發,請注明文章出處:https://cyrus-studio.github.io/blog/ FART簡介 ART 環境下基于主動調用的自動化脫殼方案,可以解決函數抽取殼。 關于函數抽取殼的實現原理可以參考:基于 art 下的類加載機…

卷積神經網絡進階:轉置卷積與棋盤效應詳解

【內容摘要】 本文深入解析卷積神經網絡中的轉置卷積(反卷積)技術,重點闡述標準卷積與轉置卷積的計算過程、轉置卷積的上采樣作用,以及其常見問題——棋盤效應的產生原因與解決方法,為圖像分割、超分辨率等任務提供理論…

Redis進階知識

Redis 1.事務2. 主從復制2.1 如何啟動多個Redis服務器2.2 監控主從節點的狀態2.3 斷開主從復制關系2.4 額外注意2.5拓撲結構2.6 復制過程2.6.1 數據同步 3.哨兵選舉原理注意事項 4.集群4.1 數據分片算法4.2 故障檢測 5. 緩存5.1 緩存問題 6. 分布式鎖 1.事務 Redis的事務只能保…

SDC命令詳解:使用get_libs命令進行查詢

相關閱讀 SDC命令詳解https://blog.csdn.net/weixin_45791458/category_12931432.html?spm1001.2014.3001.5482 get_libs命令用于創建一個庫對象集合,關于設計對象和集合的更詳細介紹,可以參考下面的博客。需要注意的是,在有些工具中還存在…

idea2024 不知道安裝了什么插件,界面都是中文的了,不習慣,怎么修改各個選項改回英文

如果你的 IntelliJ IDEA 2024 突然變成中文界面,很可能是安裝了中文語言包插件(如 “Chinese (Simplified) Language Pack”)。以下是 徹底恢復英文界面 的方法: 方法 1:直接卸載中文插件(推薦)…

物流項目第二期(用戶端登錄與雙token三驗證)

第一期內容: 物流項目第一期(登錄業務)-CSDN博客 用戶端登錄 實現分析 登錄功能 Data public class UserLoginRequestVO {ApiModelProperty("登錄臨時憑證")private String code;ApiModelProperty("手機號臨時憑證"…

精準掌控張力動態,重構卷對卷工藝設計

一、MapleSim Web Handling Library仿真和虛擬調試解決方案 在柔性材料加工領域,卷對卷(Roll-to-Roll)工藝的效率與質量直接決定了產品競爭力。如何在高動態生產場景中實現張力穩定、減少斷裂風險、優化加工速度,是行業長期面臨的…

Voxblox算法

文章目錄 1. 算法簡介2. 由 TSDF 構建 ESDF 的方法2.1. 論文解讀2.2. 偽代碼實現 1. 算法簡介 Voxblox 算法出現于文獻《Voxblox: Incremental 3D Euclidean Signed Distance Fields for On-Board MAV Planning》,PDF 鏈接:https://arxiv.org/pdf/1611.…