sửa đổi lần cuối ngày 15 tháng 7 năm 2022
Đọc một trang web trong Java là một hướng dẫn trình bày một số cách để đọc một trang web trong Java. Nó chứa bảy ví dụ về việc tải xuống một nguồn HTTP từ một trang web nhỏ.
Java đọc các công cụ trang web
Java có các công cụ tích hợp và thư viện của bên thứ ba để đọc/tải xuống các trang web. Trong các ví dụ, chúng tôi sử dụng httpclient, url, jsoup, htmlcleaner, apache httpclient, jetty httpclient và htmlunit.
Trong các ví dụ sau, chúng tôi tải xuống nguồn HTML từ trang web của WebCode.me.
Java đọc trang web với httpclient
Java 11 đã giới thiệu thư viện httpclient.
com/zetcode/ReadWebPage.java
package com.zetcode; import java.io.IOException; import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; public class ReadWebPage { public static void main[String[] args] throws IOException, InterruptedException { HttpClient client = HttpClient.newHttpClient[]; HttpRequest request = HttpRequest.newBuilder[] .uri[URI.create["//webcode.me"]] .GET[] // GET is default .build[]; HttpResponse response = client.send[request, HttpResponse.BodyHandlers.ofString[]]; System.out.println[response.body[]]; } }
Chúng tôi sử dụng java httpclient để tải xuống trang web.
HttpClient client = HttpClient.newHttpClient[];
Một
HttpRequest request = HttpRequest.newBuilder[] .uri[URI.create["//webcode.me"]] .build[];8 mới được tạo ra với phương pháp nhà máy
HttpRequest request = HttpRequest.newBuilder[] .uri[URI.create["//webcode.me"]] .build[];9.
HttpRequest request = HttpRequest.newBuilder[] .uri[URI.create["//webcode.me"]] .build[];
Chúng tôi xây dựng một yêu cầu đồng bộ đến trang web. Phương pháp mặc định là có được.
HttpResponse response = client.send[request, HttpResponse.BodyHandlers.ofString[]]; System.out.println[response.body[]];
Chúng tôi gửi yêu cầu và lấy nội dung của phản hồi và in nó vào bảng điều khiển. Chúng tôi sử dụng
HttpResponse response = client.send[request, HttpResponse.BodyHandlers.ofString[]]; System.out.println[response.body[]];0 vì chúng tôi mong đợi phản hồi HTML chuỗi.
Đọc một trang web có URL
HttpResponse response = client.send[request, HttpResponse.BodyHandlers.ofString[]]; System.out.println[response.body[]];1 đại diện cho một bộ định vị tài nguyên thống nhất, một con trỏ đến một tài nguyên trên web trên toàn thế giới.
com/zetcode/ReadWebPageEx.java
package com.zetcode; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; public class ReadWebPageEx { public static void main[String[] args] throws IOException { var url = new URL["//webcode.me"]; try [var br = new BufferedReader[new InputStreamReader[url.openStream[]]]] { String line; var sb = new StringBuilder[]; while [[line = br.readLine[]] != null] { sb.append[line]; sb.append[System.lineSeparator[]]; } System.out.println[sb]; } } }
Ví dụ mã đọc nội dung của một trang web.
try [var br = new BufferedReader[new InputStreamReader[url.openStream[]]]] {
Phương thức
HttpResponse response = client.send[request, HttpResponse.BodyHandlers.ofString[]]; System.out.println[response.body[]];2 mở kết nối với URL được chỉ định và trả về
HttpResponse response = client.send[request, HttpResponse.BodyHandlers.ofString[]]; System.out.println[response.body[]];3 để đọc từ kết nối đó.
HttpResponse response = client.send[request, HttpResponse.BodyHandlers.ofString[]]; System.out.println[response.body[]];4 là một cây cầu từ các luồng byte đến các luồng ký tự. Nó đọc byte và giải mã chúng thành các ký tự bằng cách sử dụng một ký tự được chỉ định. Ngoài ra,
HttpResponse response = client.send[request, HttpResponse.BodyHandlers.ofString[]]; System.out.println[response.body[]];5 được sử dụng để có hiệu suất tốt hơn.
var sb = new StringBuilder[]; while [[line = br.readLine[]] != null] { sb.append[line]; sb.append[System.lineSeparator[]]; }
Dữ liệu HTML được đọc từng dòng với phương thức
HttpResponse response = client.send[request, HttpResponse.BodyHandlers.ofString[]]; System.out.println[response.body[]];6. Nguồn được thêm vào
HttpResponse response = client.send[request, HttpResponse.BodyHandlers.ofString[]]; System.out.println[response.body[]];7.
System.out.println[sb];
Cuối cùng, nội dung của
HttpResponse response = client.send[request, HttpResponse.BodyHandlers.ofString[]]; System.out.println[response.body[]];7 được in vào thiết bị đầu cuối.
Đọc một trang web với JSoup
JSOUP là một trình phân tích cú pháp Java HTML nổi tiếng.
________số 8Chúng tôi đã sử dụng sự phụ thuộc maven này.
com/zetcode/ReadWebPageEx2.java
package com.zetcode; import org.jsoup.Jsoup; import java.io.IOException; public class ReadWebPageEx2 { public static void main[String[] args] throws IOException { String webPage = "//webcode.me"; String html = Jsoup.connect[webPage].get[].html[]; System.out.println[html]; } }
Ví dụ mã sử dụng JSOUP để tải xuống và in một trang web nhỏ.
HttpClient client = HttpClient.newHttpClient[];0
Phương thức
HttpResponse response = client.send[request, HttpResponse.BodyHandlers.ofString[]]; System.out.println[response.body[]];9 kết nối với trang web được chỉ định. Phương pháp
package com.zetcode; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; public class ReadWebPageEx { public static void main[String[] args] throws IOException { var url = new URL["//webcode.me"]; try [var br = new BufferedReader[new InputStreamReader[url.openStream[]]]] { String line; var sb = new StringBuilder[]; while [[line = br.readLine[]] != null] { sb.append[line]; sb.append[System.lineSeparator[]]; } System.out.println[sb]; } } }0 đưa ra yêu cầu nhận. Cuối cùng, phương pháp
package com.zetcode; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; public class ReadWebPageEx { public static void main[String[] args] throws IOException { var url = new URL["//webcode.me"]; try [var br = new BufferedReader[new InputStreamReader[url.openStream[]]]] { String line; var sb = new StringBuilder[]; while [[line = br.readLine[]] != null] { sb.append[line]; sb.append[System.lineSeparator[]]; } System.out.println[sb]; } } }1 lấy nguồn HTML.
Đọc một trang web với htmlcleaner
HTMLCleaner là một trình phân tích cú pháp HTML nguồn mở được viết bằng Java.
HttpClient client = HttpClient.newHttpClient[];1
Trong ví dụ này, chúng tôi sử dụng phụ thuộc Maven
package com.zetcode; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; public class ReadWebPageEx { public static void main[String[] args] throws IOException { var url = new URL["//webcode.me"]; try [var br = new BufferedReader[new InputStreamReader[url.openStream[]]]] { String line; var sb = new StringBuilder[]; while [[line = br.readLine[]] != null] { sb.append[line]; sb.append[System.lineSeparator[]]; } System.out.println[sb]; } } }2.
com/zetcode/ReadWebPageEx3.java
HttpClient client = HttpClient.newHttpClient[];2
Ví dụ sử dụng
package com.zetcode; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; public class ReadWebPageEx { public static void main[String[] args] throws IOException { var url = new URL["//webcode.me"]; try [var br = new BufferedReader[new InputStreamReader[url.openStream[]]]] { String line; var sb = new StringBuilder[]; while [[line = br.readLine[]] != null] { sb.append[line]; sb.append[System.lineSeparator[]]; } System.out.println[sb]; } } }3 để tải xuống một trang web.
HttpClient client = HttpClient.newHttpClient[];3
Trong các thuộc tính, chúng tôi đặt để bỏ qua khai báo XML.
HttpClient client = HttpClient.newHttpClient[];4
A
package com.zetcode; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; public class ReadWebPageEx { public static void main[String[] args] throws IOException { var url = new URL["//webcode.me"]; try [var br = new BufferedReader[new InputStreamReader[url.openStream[]]]] { String line; var sb = new StringBuilder[]; while [[line = br.readLine[]] != null] { sb.append[line]; sb.append[System.lineSeparator[]]; } System.out.println[sb]; } } }4 tạo ra HTML kết quả mà không có bất kỳ thụt lề và/hoặc nén nào.
Đọc một trang web với apache httpclient
Apache HTTPClient là triển khai tác nhân HTTP tuân thủ HTTP/1.1. Nó có thể cạo một trang web bằng cách sử dụng quy trình yêu cầu và phản hồi. Một máy khách HTTP thực hiện phía máy khách của các giao thức HTTP và HTTPS.
HttpClient client = HttpClient.newHttpClient[];5
Chúng tôi sử dụng sự phụ thuộc maven này cho máy khách Apache HTTP.
com/zetcode/ReadWebPageEx4.java
HttpClient client = HttpClient.newHttpClient[];6
Trong ví dụ mã, chúng tôi gửi yêu cầu GET HTTP đến trang web được chỉ định và nhận phản hồi HTTP. Từ phản hồi, chúng tôi đọc nguồn HTML.
HttpClient client = HttpClient.newHttpClient[];7
Một
HttpRequest request = HttpRequest.newBuilder[] .uri[URI.create["//webcode.me"]] .build[];8 được xây dựng.
HttpClient client = HttpClient.newHttpClient[];8
package com.zetcode; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; public class ReadWebPageEx { public static void main[String[] args] throws IOException { var url = new URL["//webcode.me"]; try [var br = new BufferedReader[new InputStreamReader[url.openStream[]]]] { String line; var sb = new StringBuilder[]; while [[line = br.readLine[]] != null] { sb.append[line]; sb.append[System.lineSeparator[]]; } System.out.println[sb]; } } }6 là một lớp cho phương thức HTTP GET.
HttpClient client = HttpClient.newHttpClient[];9
Một phương thức GET được thực thi và nhận được
package com.zetcode; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; public class ReadWebPageEx { public static void main[String[] args] throws IOException { var url = new URL["//webcode.me"]; try [var br = new BufferedReader[new InputStreamReader[url.openStream[]]]] { String line; var sb = new StringBuilder[]; while [[line = br.readLine[]] != null] { sb.append[line]; sb.append[System.lineSeparator[]]; } System.out.println[sb]; } } }7.
HttpRequest request = HttpRequest.newBuilder[] .uri[URI.create["//webcode.me"]] .build[];0
Từ phản hồi, chúng tôi nhận được nội dung của trang web.
Đọc một trang web với Jetty httpclient
Dự án Jetty cũng có một ứng dụng khách HTTP.
HttpRequest request = HttpRequest.newBuilder[] .uri[URI.create["//webcode.me"]] .build[];1
Đây là một sự phụ thuộc maven cho máy khách HTTP Jetty.
com/zetcode/ReadWebPageEx5.java
HttpRequest request = HttpRequest.newBuilder[] .uri[URI.create["//webcode.me"]] .build[];2
Trong ví dụ, chúng tôi nhận được nguồn HTML của một trang web với máy khách Jetty HTTP.
HttpRequest request = HttpRequest.newBuilder[] .uri[URI.create["//webcode.me"]] .build[];3
Một
HttpRequest request = HttpRequest.newBuilder[] .uri[URI.create["//webcode.me"]] .build[];8 được tạo và bắt đầu.
HttpRequest request = HttpRequest.newBuilder[] .uri[URI.create["//webcode.me"]] .build[];4
Yêu cầu GET được cấp cho URL được chỉ định.
HttpRequest request = HttpRequest.newBuilder[] .uri[URI.create["//webcode.me"]] .build[];5
Nội dung được lấy từ phản hồi với phương thức
package com.zetcode; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; public class ReadWebPageEx { public static void main[String[] args] throws IOException { var url = new URL["//webcode.me"]; try [var br = new BufferedReader[new InputStreamReader[url.openStream[]]]] { String line; var sb = new StringBuilder[]; while [[line = br.readLine[]] != null] { sb.append[line]; sb.append[System.lineSeparator[]]; } System.out.println[sb]; } } }9.
Đọc một trang web với htmlunit
HTMLunit là khung kiểm tra đơn vị Java để kiểm tra các ứng dụng dựa trên web.
HttpRequest request = HttpRequest.newBuilder[] .uri[URI.create["//webcode.me"]] .build[];6
Chúng tôi sử dụng sự phụ thuộc maven này.
com/zetcode/ReadWebPageEx6.java
HttpRequest request = HttpRequest.newBuilder[] .uri[URI.create["//webcode.me"]] .build[];7
Ví dụ tải xuống một trang web và in nó bằng thư viện htmlunit.
Trong bài viết này, chúng tôi đã cạo một trang web trong Java bằng các công cụ khác nhau, bao gồm httpclient, url, jsoup, htmlcleaner, apache httpclient, jetty httpclient và htmlunit.
Liệt kê tất cả các hướng dẫn Java.