用 Java 下載網頁
一、概述
在某些應用程序中,我們可能需要從互聯網上下載一個網頁並將其內容提取為字符串。一個流行的用例是網絡抓取或內容解析。
在本教程中,我們將使用 Jsoup 和HttpURLConnection
下載示例網頁。
2. 使用HttpURLConnection
下載網頁
HttpURLConnection
是URLConnection.
它有助於連接到使用 HTTP 的統一資源定位符 (URL) 作為它的協議。該類包含不同的方法來操作 HTTP 要求。
讓我們使用HttpURLConnection
下載示例網頁:
@Test
void givenURLConnection_whenRetrieveWebpage_thenWebpageIsNotNullAndContainsHtmlTag() throws IOException {
URL url = new URL("https://example.com");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()))) {
StringBuilder responseBuilder = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
responseBuilder.append(line);
}
assertNotNull(responseBuilder);
assertTrue(responseBuilder.toString()
.contains("<html>"));
}
}
在這裡,我們創建一個表示網頁地址的URL
對象。接下來,我們創建一個HttpURLConnection
實例並調用URL
對象的openConnection()
方法。這將打開到網頁的連接。此外,我們將請求方法設置為 GET 以獲取網頁內容。
然後,我們創建一個新的BufferedReader
和InputStreamReader
實例來幫助從網頁中讀取數據。 InputStreamReader
類有助於將原始字節轉換為BufferedReader
可以讀取的字符。
最後,我們通過從BufferedReader
讀取並將行連接在一起,將網頁轉換為String
。我們使用StringBuilder
對象來有效地連接這些行。
3. 使用 Jsoup 下載網頁
Jsoup 是一個流行的開源 Java 庫,用於處理 HTML。它有助於獲取 URL 並提取其數據。它的主要優勢之一是使用 HTML DOM 方法和 CSS 選擇器從 URL 中抓取 HTML 。
要開始使用 Jsoup,我們需要將其依賴項添加到我們的依賴項管理器中。讓我們將Jsoup依賴項添加到pom.xml
:
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.15.4</version>
</dependency>
以下是使用 Jsoup 下載網頁的示例:
@Test
void givenJsoup_whenRetrievingWebpage_thenWebpageDocumentIsNotNullAndContainsHtmlTag() throws IOException {
Document document = Jsoup.connect("https://www.example.com").get();
String webpage = document.html();
assertNotNull(webpage);
assertTrue(webpage.contains("<html>"));
}
在此示例中,我們創建了一個Document
實例,並使用Jsoup.connect(). Jsoup.connect()
有助於建立到 URL 的連接並將其內容檢索為Document
對象。
接下來,我們調用get()
方法,該方法向指定的 URL 發送 GET 請求。它將響應返回為Document
。
最後,我們將提取出來的內容存入一個String
類型的可變webpage
中。我們通過在Document
對像上調用html()
方法來完成此操作。
4。結論
在本文中,我們學習了兩種用 Java 下載網頁的方法。我們使用了HttpURLConnection
類和 Jsoup 來下載網頁的內容。這兩種方法都可以使用,但 Jsoup 似乎更容易使用。
與往常一樣,示例的完整示例源代碼可 在 GitHub 上獲得。