3 cách để tách văn bản thuần túy khỏi HTML bằng Java>

Bạn đang tìm kiếm cách tách văn bản khỏi HTML bằng Java? Tìm hiểu ngay 3 giải pháp API có thể được sử dụng để chuyển đổi tài liệu HTML thành văn bản, chuyển đổi chuỗi HTML thành văn bản và xóa HTML khỏi chuỗi văn bản.

Vì sao phải tách văn bản khỏi HTML?
Trên mỗi trang web chúng ta truy cập, chúng ta phải đối mặt với rất nhiều nội dung đa phương tiện, tất cả đều được tập hợp lại với nhau và được trình bày bằng Ngôn ngữ đánh dấu siêu văn bản (HTML). HTML là ngôn ngữ lập trình cơ bản mà nhiều nhà phát triển đã quen thuộc, bao gồm các thành phần – khi được trình duyệt diễn giải – thường tạo thành một màn hình mạch lạc, có tổ chức và có chủ ý với nhiều thành phần tùy chỉnh khác nhau.
Mã này cung cấp khuôn khổ cho cách chúng ta xem hình ảnh, video, nội dung văn bản, siêu liên kết, trường nhập dữ liệu và bất kỳ thứ gì khác mà bạn có thể nghĩ đến trên một trang web. Và tất cả mã đó đều có sẵn cho bất kỳ ai xem bằng một thao tác đơn giản bằng quyền nhấp vào bất kỳ trình duyệt nào.
Với khối lượng lớn các phần tử định dạng có trong bất kỳ chuỗi HTML phức tạp nào, chủ đề thực sự của code – nội dung văn bản và đường dẫn tệp nằm trong các chuỗi đó – có thể hơi khó truy cập độc lập với các đặc tả định dạng đó. Ví dụ: nếu muốn xem lại nội dung web và sau đó chỉnh sửa hoặc thao tác văn bản đó theo cách có ý nghĩa, ta sẽ gặp khó khăn khi sao chép và dán trực tiếp thông tin đó từ trang web được hiển thị. Chúng ta sẽ kết thúc với một mớ hỗn độn văn bản có định dạng không nhất quán với các siêu liên kết, biểu trưng, các tab và khoảng trắng rời rạc, v.v.
Nhưng không có nghĩa là nó không thể được thực hiện. Tất nhiên, chúng ta có thể sao chép các đoạn văn bản nhỏ từ bất kỳ trang web nào và định dạng lại các đoạn văn bản đó để giống với dạng ban đầu của chúng trong các trình soạn thảo văn bản đa dạng thức như Microsoft Word.
Giải pháp API tách văn bản khỏi HTML đơn giản
Thay vì lãng phí thời gian và công sức để cố gắng lấy văn bản mình muốn bằng cách nhấp và kéo chuột, tốt hơn hết là chúng ta nên xóa hoàn toàn văn bản đó khỏi mã HTML. Và dịch vụ API được trang bị riêng để làm như vậy. Chúng ta có thể thực hiện việc phân tách này thông qua một số phương pháp – mặc dù bề ngoài có vẻ giống hệt nhau nhưng chúng phù hợp với các trường hợp sử dụng hơi khác nhau. Các phương pháp này bao gồm:
- Chuyển đổi tệp HTML thành văn bản thuần túy
- Chuyển đổi một chuỗi HTML thành văn bản thuần túy
- Xóa HTML khỏi chuỗi văn bản
Điểm giống và khác nhau giữa 3 phương pháp tách văn bản khỏi HTML
+ Phương thức thứ nhất và thứ hai về cơ bản là cùng một hoạt động với hai tình huống khác nhau:
Trước đây, mã HTML có sẵn cho chúng ta ở dạng tệp (một tệp sẽ mở trực tiếp dưới dạng trang trình duyệt khi nhấp vào nó). Và sau này, HTML có sẵn dưới dạng chuỗi văn bản (ví dụ: HTML mà chúng ta đã sao chép bằng cách nhấp chuột phải vào trình duyệt web của mình).
+ Phương pháp thứ ba về mặt kỹ thuật hoàn thành cùng một mục tiêu như hai phương pháp đầu tiên:
Nhưng nó tập trung vào bảo mật hơn, giúp xác định các cuộc tấn công HTML và Cross-Site Scripting (một dạng đe dọa mạng trong đó một tác nhân độc hại đặt các tập lệnh thực thi vào mã ứng dụng/trang web đáng tin cậy) trong một chuỗi văn bản nhất định mà không cần giả định rằng có một chuỗi HTML được định dạng đầy đủ để làm việc.
Hướng dẫn tách mã HTML khỏi văn bản thuần túy bằng 3 giải pháp API
Phần này sẽ trình bày cụ thể ba giải pháp API đơn giản có thể được sử dụng để tách mã HTML khỏi nội dung văn bản thuần túy cho bất kỳ trường hợp nào được liệt kê ở trên. Tất cả các API này đều miễn phí sử dụng và có sẵn thông qua điểm cuối API chuyển đổi tài liệu Cloudmersive, với một khóa API Cloudmersive cấp miễn phí duy nhất để xác thực từng dịch vụ (cung cấp giới hạn 800 lệnh gọi API mỗi tháng và không có cam kết bổ sung).
Dưới đây là ví dụ về mã Java sẵn sàng chạy để giúp bạn cấu trúc lệnh gọi API của mình tới từng API trong số ba API này, với các ghi chú bổ sung liên quan đến yêu cầu đầu vào và phản hồi đầu ra khi cần.
Trước khi bắt đầu gọi từng lần lặp API riêng lẻ, các hướng dẫn này giúp bạn cài đặt ứng dụng khách API bằng Maven hoặc Gradle (những hướng dẫn này giống nhau cho mỗi lần lặp API). Để cài đặt với Maven, nhiệm vụ đầu tiên là thêm một tham chiếu đến kho lưu trữ trong pom.xml:
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
Sau đó, chúng ta chỉ cần thêm một tham chiếu bổ sung vào phần phụ thuộc pom.xml:
<dependencies>
<dependency>
<groupId>com.github.Cloudmersive</groupId>
<artifactId>Cloudmersive.APIClient.Java</artifactId>
<version>v4.25</version>
</dependency>
</dependencies>
Thay vào đó, để cài đặt bằng Gradle, chúng ta cần thêm đoạn mã dưới đây vào gốc build.gradle (ở cuối kho lưu trữ):
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
Sau đó, chúng ta sẽ cần thêm phần phụ thuộc bên dưới vào build.gradle:
dependencies {
implementation 'com.github.Cloudmersive:Cloudmersive.APIClient.Java:v4.25'
}
Khi quá trình cài đặt hoàn tất, chúng ta có thể tiếp tục và bắt đầu cấu trúc các lệnh gọi API của mình.
Lần lặp lại API đầu tiên
Có thể được sử dụng để chuyển đổi tài liệu HTML (tệp) thành văn bản thuần túy. API này yêu cầu đầu vào đường dẫn tệp được bao gồm trong inputFiletrường (được biểu thị bằng nhận xét mã trong các ví dụ được cung cấp bên dưới). Chúng ta chỉ cần sao chép mã bên dưới vào tệp của mình và định cấu hình đầu vào cho phù hợp:
// Import classes:
//import com.cloudmersive.client.invoker.ApiClient;
//import com.cloudmersive.client.invoker.ApiException;
//import com.cloudmersive.client.invoker.Configuration;
//import com.cloudmersive.client.invoker.auth.*;
//import com.cloudmersive.client.ConvertDocumentApi;
ApiClient defaultClient = Configuration.getDefaultApiClient();
// Configure API key authorization: Apikey
ApiKeyAuth Apikey = (ApiKeyAuth) defaultClient.getAuthentication("Apikey");
Apikey.setApiKey("YOUR API KEY");
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//Apikey.setApiKeyPrefix("Token");
ConvertDocumentApi apiInstance = new ConvertDocumentApi();
File inputFile = new File("/path/to/inputfile"); // File | Input file to perform the operation on.
try {
TextConversionResult result = apiInstance.convertDocumentHtmlToTxt(inputFile);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling ConvertDocumentApi#convertDocumentHtmlToTxt");
e.printStackTrace();
}
Lần lặp lại API thứ hai
Có thể được sử dụng để chuyển đổi chuỗi HTML thành văn bản. Các tham số yêu cầu của API này yêu cầu đầu vào chuỗi HTML đơn giản, có thể được bao gồm ở định dạng sau:
<?xml version="1.0" encoding="UTF-8"?>
<HtmlToTextRequest>
<Html>string</Html>
</HtmlToTextRequest>
Với chuỗi HTML được định dạng đúng, bạn có thể chuyển chuỗi của mình qua các ví dụ mã bên dưới để hoàn tất:
// Import classes:
//import com.cloudmersive.client.invoker.ApiClient;
//import com.cloudmersive.client.invoker.ApiException;
//import com.cloudmersive.client.invoker.Configuration;
//import com.cloudmersive.client.invoker.auth.*;
//import com.cloudmersive.client.ConvertWebApi;
ApiClient defaultClient = Configuration.getDefaultApiClient();
// Configure API key authorization: Apikey
ApiKeyAuth Apikey = (ApiKeyAuth) defaultClient.getAuthentication("Apikey");
Apikey.setApiKey("YOUR API KEY");
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//Apikey.setApiKeyPrefix("Token");
ConvertWebApi apiInstance = new ConvertWebApi();
HtmlToTextRequest input = new HtmlToTextRequest(); // HtmlToTextRequest | HTML to Text request parameters
try {
HtmlToTextResponse result = apiInstance.convertWebHtmlToTxt_0(input);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling ConvertWebApi#convertWebHtmlToTxt_0");
e.printStackTrace();
}
Lần lặp lại API cuối cùng
Có thể được sử dụng để thực hiện nghịch đảo của hai thao tác trước đó: xóa HTML khỏi chuỗi văn bản. Để gọi API này, chúng tôi sẽ cần định dạng yêu cầu đầu vào của mình như ví dụ bên dưới:
<?xml version="1.0" encoding="UTF-8"?>
<RemoveHtmlFromTextRequest>
<TextContainingHtml>string</TextContainingHtml>
</RemoveHtmlFromTextRequest>
Khi yêu cầu được định dạng, chúng ta có thể chuyển yêu cầu đó qua các ví dụ mã cuối cùng bên dưới, yêu cầu này sẽ trả về một TextContentResultchuỗi đơn giản:
// Import classes:
//import com.cloudmersive.client.invoker.ApiClient;
//import com.cloudmersive.client.invoker.ApiException;
//import com.cloudmersive.client.invoker.Configuration;
//import com.cloudmersive.client.invoker.auth.*;
//import com.cloudmersive.client.EditTextApi;
ApiClient defaultClient = Configuration.getDefaultApiClient();
// Configure API key authorization: Apikey
ApiKeyAuth Apikey = (ApiKeyAuth) defaultClient.getAuthentication("Apikey");
Apikey.setApiKey("YOUR API KEY");
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//Apikey.setApiKeyPrefix("Token");
EditTextApi apiInstance = new EditTextApi();
RemoveHtmlFromTextRequest request = new RemoveHtmlFromTextRequest(); // RemoveHtmlFromTextRequest | Input request
try {
RemoveHtmlFromTextResponse result = apiInstance.editTextRemoveHtml(request);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling EditTextApi#editTextRemoveHtml");
e.printStackTrace();
}
Với ba giải pháp sẵn có này, bạn sẽ có thể dễ dàng tách văn bản khỏi HTML ở quy mô lớn với ba trường hợp sử dụng riêng biệt. Mỗi giải pháp API trả về một chuỗi văn bản thuần túy đơn giản, có thể dễ dàng xem xét và chỉnh sửa trong bất kỳ trình soạn thảo văn bản đa dạng thức hoặc thuần túy nào.