Các vấn đề liên quan đến phân tích HTML

Một phần của tài liệu Hệ thống bóc tách giá cả sản phẩm tự động (Trang 25)

2.1.1.1. Hyper Text Markup Language - HTML

HTML là một chuẩn cho việc hiển thị các thông tin trên Web. Bản chất của HTML là một tệp văn bản trong đó chứa các thông tin hiển thị theo các thẻ định dạng. Các trình duyệt Web sử dụng các thẻ này để hiển thị các thông tin theo định dạng qui ước.

Các thẻ của HTML được định nghĩa sẵn và thường tuân theo chuẩn của W3C (Tiêu chuẩn thiết kế web World Wide Web Consortium). Mỗi thẻ HTML gồm một thẻ mở (start tag) và một thẻ đóng (end tag) dùng để bao một vùng nội dung muốn định dạng. Nó tạo thành một phân tử gọi là HTML Element. Một số thẻ còn có các tham số đi kèm được gọi là thuộc tính của thẻ.

2.1.1.2. HTML DOM (HTML Document Object Model)

HTML DOM là một mô hình mô tả các tài liệu HTML dưới dạng các đối tượng. Mô hình DOM được hiểu như một giao diện được sử dụng cho nhiều nền. Thông qua đó người lập trình có thể truy xuất và thực hiện các thao tác trên tài liệu HTML dễ dàng và tuân thủ một nguyên tắc chung.

Khi biểu diễn trong mô hình DOM, các tài liệu HTML được thể hiện dưới dạng một cấu trúc cây. Mọi thao tác truy xuất đều thực hiện trên các nút của cây. Các nút này tương ứng với các HTML Element hoặc các vùng nội dung tự do. (Hình 2.1)

Hình 2.1: Mô tả tài liệu HTML theo mô hình DOM

Mọi nút trong mô hình này (trừ nút đầu tiên) đều có nút cha (parent node) và các nút con (children node) của nó. Đặc điểm này xuất phát từ cấu trúc tài liệu HTML có các HTML Element được tổ chức lồng nhau. Các nút văn bản do không có các nút con nên luôn nằm ở vị trí các nút lá (leaf node). Nút nằm ở vị trí gốc (root node) của cây DOM thường là Document node – tương ứng với một tài liệu HTML.

Các đối tượng của mô hình DOM thường được sử dụng trong các ứng dụng phân tích tài liệu HTML như:

Document: Là đối tượng bao bọc (wrapper) một tài liệu HTML bên trong. Các nút Document luôn là nút gốc trong mô hình DOM của các tài liệu HTML. Bên dưới Document có các nút là các Element, nút văn bản hay các loại nút khác tương ứng với các yếu tố khác nhau trong chuẩn HTML.

Element: Là các nút nằm trên cây DOM, thường không phải là các nút lá, bên dưới chúng có các nút con như nút văn bản. Mỗi một nút Element trên cây DOM bao bọc một HTML Element bên trong.

Từ một đối tượng Element chúng ta có thể xác định được kiểu nút tương ứng như hình ảnh, liên kết và các thuộc tính của nút.

Text: Là các phần nội dung văn bản hiển thị trên Web. Các nút loại này phải nằm dưới ít nhất một nút element.

2.1.1.3. Bộ phân tích HTML

Hình 2.2: Cấu trúc về giải thuật parser

Có hai cách tiếp cận để thực hiện các phân tích trên HTML. Một cách đơn giản và cho tốc độ nhanh, đó là dùng biểu thức chính qui. Việc phát hiện các thẻ hoặc các siêu liên kết được thực hiện dựa trên mẫu nhận dạng. Cách tiếp cận phân tích HTML bằng các kĩ thuật phân tích xâu kí tự như trên sẽ bị hạn chế trong nhiều trường hợp. Chẳng hạn, khi sử dụng biểu thức chính qui không cho thấy các quan hệ giữa nút cha, nút con. Khi cần xác định ví trị của một thông tin nào đó trên các trang Web có cấu trúc, thông thường cần xác định được nó nằm ở nút nào theo qui tắc truy vết từ nút trên cùng đến nút chứa thông tin.

Một giải pháp hỗ trợ tốt hơn cho phương pháp trên là sử dụng DOM. Vì các thông tin hiển thị trên Web là các thông tin được sắp xếp một cách có cấu trúc, nên để phân tích cú pháp HTML, trước tiên các bộ phân tích HTML thường đưa chúng về dạng cây theo mô hình biểu diễn DOM. Mỗi Element trong tài liệu HTML sẽ được xác định kiểu, các thuộc tính như InnerHtml, InnerText và tạo thành một nút. Bộ phân tích HTML cũng cung cấp các phương thức quan trọng cho phép chúng ta thêm, sửa, xóa nút và thao tác đầy đủ trên cây.

Ngoài ra, bộ phân tích HTML còn có khả năng sửa lỗi các tài liệu HTML. Chúng ta biết các tài liệu Web được tạo ra không thể tránh khỏi những lỗi chung chung, chúng được xếp vào loại định dạng không tốt, như thiếu thẻ đóng, dùng các thẻ không theo chuẩn, các thẻ chưa được định nghĩa sẵn. Ví dụ, một thẻ đóng được tìm thấy nhưng nó không tương ứng với thẻ mở cuối cùng, nên các thao tác sẽ không thực hiện được. Để khắc phục vấn đề này, bộ phân tích sử dụng các thẻ tự động đóng (auto- closing). Tức là thẻ mở cuối cùng sẽ tự động đóng, sau đó thẻ đóng sẽ được so sánh với các thẻ mở cho đến khi thẻ tương ứng được tìm thấy.

Một phần của tài liệu Hệ thống bóc tách giá cả sản phẩm tự động (Trang 25)