Computer >> Máy Tính >  >> Lập trình >> Java

Làm thế nào để đọc nội dung của một trang web thành một chuỗi trong java?

Bạn có thể đọc nội dung của một trang web theo nhiều cách bằng cách sử dụng Java. Ở đây, chúng ta sẽ thảo luận về ba trong số chúng.

Sử dụng phương thức openStream ()

URL lớp của gói java.net đại diện cho Bộ định vị tài nguyên đồng nhất được sử dụng để trỏ một tài nguyên (tệp hoặc, thư mục hoặc tham chiếu) trong world wide web.

openStream () phương thức của lớp này mở một kết nối đến URL được đại diện bởi đối tượng hiện tại và trả về một đối tượng InputStream sử dụng mà bạn có thể đọc dữ liệu từ URL.

Do đó, để đọc dữ liệu từ trang web (sử dụng lớp URL) -

  • Khởi tạo lớp java.net.URL bằng cách chuyển URL của trang web mong muốn làm tham số cho hàm tạo của nó.

  • Gọi phương thức openStream () và truy xuất đối tượng InputStream.

  • Khởi tạo lớp Máy quét bằng cách chuyển đối tượng InputStream đã truy xuất ở trên làm tham số.

Ví dụ

import java.io.IOException;
import java.net.URL;
import java.util.Scanner;
public class ReadingWebPage {
   public static void main(String args[]) throws IOException {
      //Instantiating the URL class
      URL url = new URL("https://www.something.com/");
      //Retrieving the contents of the specified page
      Scanner sc = new Scanner(url.openStream());
      //Instantiating the StringBuffer class to hold the result
      StringBuffer sb = new StringBuffer();
      while(sc.hasNext()) {
         sb.append(sc.next());
         //System.out.println(sc.next());
      }
      //Retrieving the String from the String Buffer object
      String result = sb.toString();
      System.out.println(result);
      //Removing the HTML tags
      result = result.replaceAll("<[^>]*>", "");
      System.out.println("Contents of the web page: "+result);
   }
}

Đầu ra

<html><body><h1>Itworks!</h1></body></html>
Contents of the web page: Itworks!

Sử dụng HttpClient

Http client là một thư viện chuyển giao, nó nằm ở phía client, gửi và nhận các thông điệp HTTP. Nó cung cấp triển khai cập nhật, nhiều tính năng và hiệu quả, đáp ứng các tiêu chuẩn HTTP gần đây.

Yêu cầu GET (của giao thức Http) được sử dụng để truy xuất thông tin từ máy chủ đã cho bằng cách sử dụng một URI nhất định. Các yêu cầu sử dụng GET chỉ nên truy xuất dữ liệu và không có ảnh hưởng nào khác đến dữ liệu.

API HttpClient cung cấp một lớp có tên HttpGet đại diện cho phương thức nhận yêu cầu. Để thực hiện yêu cầu GET và truy xuất nội dung của trang web -

  • createDefault () phương thức của lớp HttpClients trả về một đối tượng ClosableHttpClient, là phần triển khai cơ sở của giao diện HttpClient. Sử dụng phương pháp này, tạo một đối tượng HttpClient.

  • Tạo một yêu cầu HTTP GET bằng cách khởi tạo lớp HttpGet. Hàm tạo của lớp này chấp nhận giá trị Chuỗi đại diện cho URI của trang web mà bạn cần gửi yêu cầu.

  • Thực thi yêu cầu HttpGet bằng cách gọi execute () phương pháp.

  • Lấy một đối tượng InputStream đại diện cho nội dung của trang web từ phản hồi dưới dạng -

httpresponse.getEntity().getContent()

Ví dụ

import java.util.Scanner;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
public class HttpClientExample {
   public static void main(String args[]) throws Exception{
      //Creating a HttpClient object
      CloseableHttpClient httpclient = HttpClients.createDefault();
      //Creating a HttpGet object
      HttpGet httpget = new HttpGet("https://www.something.com/");
      //Executing the Get request
      HttpResponse httpresponse = httpclient.execute(httpget);
      Scanner sc = new Scanner(httpresponse.getEntity().getContent());
      //Instantiating the StringBuffer class to hold the result
      StringBuffer sb = new StringBuffer();
      while(sc.hasNext()) {
         sb.append(sc.next());
         //System.out.println(sc.next());
      }
      //Retrieving the String from the String Buffer object
      String result = sb.toString();
      System.out.println(result);
      //Removing the HTML tags
      result = result.replaceAll("<[^>]*>", "");
      System.out.println("Contents of the web page: "+result);
   }
}

Đầu ra

<html><body><h1>Itworks!</h1></body></html>
Contents of the web page: Itworks!

Sử dụng thư viện Jsoup

Jsoup là một thư viện dựa trên Java để làm việc với nội dung dựa trên HTML. Nó cung cấp một API rất tiện lợi để trích xuất và thao tác dữ liệu, sử dụng các phương thức tốt nhất của DOM, CSS và jquery. Nó triển khai đặc điểm kỹ thuật HTML5 của WHATWG và phân tích cú pháp HTML sang cùng một DOM như các trình duyệt hiện đại làm.

Để truy xuất nội dung của một trang web bằng thư viện Jsoup -

  • connect () phương thức của lớp Jsoup chấp nhận một URL của một trang web và kết nối với trang web được chỉ định và trả về đối tượng kết nối. Kết nối với trang web mong muốn bằng cách sử dụng connect () phương pháp.

  • Phương thức get () của giao diện Kết nối gửi / thực hiện yêu cầu GET và trả về tài liệu HTML như một đối tượng của lớp Tài liệu. Gửi yêu cầu GET đến trang bằng cách gọi phương thức get ().

  • Truy xuất nội dung của tài liệu đã thu được vào một Chuỗi dưới dạng -

String result = doc.body().text();

Ví dụ

import java.io.IOException;
import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
public class JsoupExample {
   public static void main(String args[]) throws IOException {
      String page = "https://www.something.com/";
      //Connecting to the web page
      Connection conn = Jsoup.connect(page);
      //executing the get request
      Document doc = conn.get();
      //Retrieving the contents (body) of the web page
      String result = doc.body().text();
      System.out.println(result);
   }
}

Đầu ra

It works!