Chuyển đổi trích xuất văn bản HTML

HTML là ngôn ngữ đánh dấu được sử dụng phổ biến trong các trang web, ứng dụng web, v.v. Nội dung trong HTML được phân biệt bằng các thẻ khác nhau. Bạn có thể dễ dàng chuyển đổi HTML thành văn bản thuần túy bằng ngôn ngữ C# trong khi bỏ qua các thẻ mở và thẻ đóng. Tương tự như vậy, có thể có một số thông số kỹ thuật biểu định kiểu xếp tầng, JavaScript hoặc bất kỳ phần nào khác của HTML theo yêu cầu của bạn. Do đó, nó giống như Trích xuất văn bản từ tài liệu HTML. Hãy để chúng tôi đi qua phần sau để biết thông tin chi tiết:

Trình chuyển đổi HTML sang văn bản thuần túy trong C#

Bạn có thể chuyển đổi HTML thành Văn bản thuần túy bằng Aspose.HTML for .NET API. Nó có thể dễ dàng được cấu hình trong môi trường dựa trên .NET Framework bằng lệnh cài đặt NuGet sau:

PM> Install-Package Aspose.Html

Chuyển đổi HTML sang tệp văn bản bằng cách sử dụng INodeIterator trong C#

Aspose.HTML for .NET API dựa trên DOM (Mô hình đối tượng tài liệu) để bạn có thể lặp qua các nút khác nhau của API bằng cách sử dụng giao diện INodeIterator. Tương tự như vậy, nó cung cấp cho bạn quyền kiểm soát để xác định một NodeFilter và ghi đè các phương thức để lọc nội dung. Bạn có thể bỏ qua kiểu dáng, tập lệnh hoặc bất kỳ thành phần nào khác trong tệp HTML để chỉ chọn chuỗi văn bản trong đó. Dưới đây là các bước để chuyển đổi HTML sang Tệp TXT thuần túy bằng C#:

  1. Đọc tệp HTML đầu vào
  2. Khởi tạo phiên bản của trình vòng lặp nút
  3. Tạo phiên bản INodeIterator
  4. Kiểm tra bộ lọc kiểu
  5. Đọc giá trị nút trong một chuỗi
  6. Viết nội dung Văn bản của HTML dưới dạng tệp TXT

Đoạn mã dưới đây cho thấy cách chuyển đổi HTML thành tệp Văn bản thuần túy bằng C#:

String content = File.ReadAllText(dataDir + "Test2.html");

// Tạo một thể hiện của tài liệu HTML
using (var document = new HTMLDocument(content, ""))
{
    // Cách đầu tiên để thu thập các thành phần văn bản từ tài liệu
    // Khởi tạo phiên bản của trình vòng lặp nút
    Aspose.Html.Dom.Traversal.INodeIterator iterator = document.CreateNodeIterator(document, Aspose.Html.Dom.Traversal.Filters.NodeFilter.SHOW_TEXT, new StyleFilter());
    StringBuilder sb = new StringBuilder();
    Aspose.Html.Dom.Node node;
    while ((node = iterator.NextNode()) != null)
        sb.Append(node.NodeValue);
    Console.WriteLine(sb.ToString());

    File.WriteAllText(@"NodeIterator.txt", sb.ToString());
}


///<summary>
/// Đại diện cho bộ lọc người dùng được tạo để bỏ qua nội dung của phần tử 'kiểu' và 'tập lệnh'.
///</summary>
class StyleFilter : Aspose.Html.Dom.Traversal.Filters.NodeFilter
{
    public override short AcceptNode(Aspose.Html.Dom.Node n)
    {
        //Muốn tránh phần tử nào thì viết hoa tên phần tử đó
        return (n.ParentElement.TagName == "STYLE" || n.ParentElement.TagName == "SCRIPT" ? FILTER_REJECT : FILTER_ACCEPT);
    }
}

Trích xuất văn bản từ HTML bằng các cách tiếp cận khác nhau bằng C#

Chúng ta đã học cách chuyển đổi HTML sang Văn bản bằng cách sử dụng INodeIterator. Tương tự như vậy, có một số cách tiếp cận khác để đạt được các yêu cầu này. Bạn có thể tạo một phương thức tùy chỉnh để trích xuất văn bản hoặc làm việc với thuộc tính TextContent như được giải thích trong các bước bên dưới:

  1. Tải tài liệu HTML đầu vào
  2. Định nghĩa một phương thức do người dùng định nghĩa
  3. Kiểm tra từng NodeType để xem đó là nút phần tử hay nút văn bản
  4. Nhận các phần tử văn bản bằng thuộc tính TextContent
  5. Lưu tệp TXT đầu ra

Đoạn mã dưới đây giải thích hai cách tiếp cận khác nhau này để chuyển đổi HTML thành Văn bản thuần túy trong C#:

String text = "";
String content = File.ReadAllText(dataDir + "Test2.html");
// Tạo một thể hiện của tài liệu HTML
var document = new HTMLDocument(content, "");

// Cách thứ hai để thu thập các phần tử văn bản từ tài liệu bằng cách sử dụng phương thức tùy chỉnh
text = GetContent(document.Body);

File.WriteAllText("Test.txt", text);

// Cách thứ ba để thu thập các thành phần văn bản từ tài liệu bằng cách sử dụng thuộc tính TextContent
text = document.Body.TextContent;

File.WriteAllText("Test.txt", text);



static string GetContent(Aspose.Html.Dom.Node node)
{
    StringBuilder sb = new StringBuilder();
    foreach (var n in node.ChildNodes)
    {
        if (n.NodeType == Aspose.Html.Dom.Node.ELEMENT_NODE)
            sb.Append(GetContent(n));
        else if (n.NodeType == Aspose.Html.Dom.Node.TEXT_NODE)
            sb.Append(n.NodeValue);
    }
    return sb.ToString();
}

Chuyển đổi trang web URL HTML thành văn bản bằng C#

Chúng tôi đã đề cập đến việc chuyển đổi HTML sang văn bản của trang web ngoại tuyến trong đó tệp HTML được yêu cầu tồn tại bằng cách tải xuống trên đĩa. Hãy để chúng tôi tiến thêm một bước nữa mà bạn thậm chí không cần lưu tệp HTML trên đĩa. Bạn có thể trực tiếp chuyển đổi một trang web bằng cách chỉ định URL của nó thành tệp TXT bằng C#. Chẳng hạn, chúng ta hãy chuyển đổi trang sản phẩm của Aspose.HTML for .NET API thành tệp TXT với các bước dưới đây:

  1. Khởi tạo đối tượng HTMLDocument và chỉ định URL
  2. Đọc nội dung văn bản ở định dạng HTML
  3. Viết tệp TXT với văn bản được trích xuất từ trang web

Mã bên dưới cho biết cách chuyển đổi URL Trang web HTML thành Văn bản bằng C#:

// Khởi tạo đối tượng HTMLDocument bằng URL
HTMLDocument document = new HTMLDocument("https://products.aspose.com/html/net");
            
// Đọc nội dung văn bản ở định dạng HTML
String text = document.Body.TextContent;
            
// Viết tệp TXT với văn bản được trích xuất
File.WriteAllText("Webpage.txt", text);

Sự kết luận

Trong bài viết này, chúng ta đã thảo luận cách chuyển đổi tệp HTML thành Văn bản thuần túy, trích xuất văn bản từ HTML, cũng như URL trang web trực tuyến sang định dạng tệp TXT bằng C#. Bạn có thể sử dụng các cách tiếp cận khác nhau và vui lòng liên hệ với chúng tôi qua Diễn đàn hỗ trợ miễn phí nếu bạn cần thêm bất kỳ trợ giúp nào.

Xem thêm

Mẹo: Bạn có thể quan tâm đến Chuyển đổi văn bản thành GIF miễn phí cho phép bạn tạo hoạt ảnh từ văn bản.