用 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 上獲得。