Tách thông tin 55

Một phần của tài liệu đồ án công nghệ thông tin Xây dựng wrapper cho nguồn dữ liệu Web trong hệ thống tích hợp dữ liệu (Trang 56)

Như trên đã nói, nội dung của trang web không thể được truy vấn theo cỏc cỏch thông thường của các cơ sở dữ liệu bởi vì chúng là dữ liệu không có cấu trúc và cú qỳa nhiều thông tin thừa.Cú một vài site cung cấp các công cụ tìm kiếm, nhưng các tiện ích tìm kiếm đú cũn rất nhiều hạn chế và kết quả trả về vẫn còn là một trang HTML.

Trong phần này chúng tôi sẽ sử dụng đại số đánh dấu (Markup Algebra) của ngôn ngữ WebL để làm lí thuyết cho việc tách thong tin ra khỏI trang web.

Markup Algebra được sử dụng để thao tác vớI các trang web và tách dữ liệu từ chúng. Việc tách thong tin bao gồm từ các toán tử đơn giản như lặp tìm kiếm tất cả các lien kết trong một trang cho đến các thao tác phức tạp như điền vào một form và xử lí kết quả trả về từ server. Ngoài ra việc thao tác vớI trang web còn có thể là sửa đổI một phần trang web hay tạo ra một trang hoàn toàn mớI từ các trang đó cú.

Markup Algebra bao gồm một tập các toán tử và hàm thao tác lờn cỏc trang (Page), thẻ (tag), mảnh (piece), tập các mảnh (piece set). Có một số toán tử và hàm cho phép tạo ra hay xây dựng tập các mảnh từ các trang hay từ các tập các mảnh khác, chuyển đổI các mảnh thành các chuỗI biểu diễn, sửa đổi nội dung của một trang…

Trước khi đi sâu vào các hàm, các toán tử chúng ta cần làm quen vớI các khái niệm Page, Tag, Piece và Piece Set.

a) Pages, Tags, Pieces, and Piece Sets

Sau khi một trang được lấy về từ Web và được phân tích cú pháp gắn với một kiểu MIME nào đó, trang và nội dung của trang có thể được truy cập để thực

hiện một số phép toán. Các phép toán có thể thực hiện lên một trang được định nghĩa bởI đạI số đánh dấu.

Đại số đánh dấu dựa trên 3 khái niệm cơ bản: tag, piece và piece set. một cách đơn giản, cú thờ hiểu tag như các thẻ, một piece như một miền con liên tục của một trang và một piece set là một tập các piece.

Tag:

Bước đầu tiên khi phân tích một trang web là phảI xác định tất cả các thẻ đánh dấu trong trang (nằm giữa hai kí tự ‘<’ và ‘>’). MỗI thẻ được chuyển đổi thành một tag. Một cách khái niệm, một trang bao gồm một danh sách các đối tượng tag và các đoạn văn bản thuần tuý. Chúng ta có thể sử dụng cách biểu diễn hình ảnh dạng một con tàu để minh hoạ phép chuyển đổi các thẻ đánh dấu thành các đốI tượng tag (hình 1). Trong hình mỗi hộp biểu diễn một tag hay một đoạn text.

ĐạI số đánh dấu đưa ra khái niệm thẻ không tên <>.Nó được sử dụng trong quá trình tách dữ liệu, đánh dấu vị trí. Từ cái tên của nó, ta có thể thấy rằng nó không có tên hay thuộc tính gì cả.

Piece:

Một Piece là một kiểu giá trị, biểu diễn một miền của một trang. Mỗi Piece tham chiếu đến hai tag: begin tag biểu diễn tag bắt đầu và end tag kí hiệu tag kết thúc của miền. Miễn bao gồm cả hai tag bắt đầu, kết thúc và toàn bộ mọI thứ nằm giữa hai tag đó. Chú ý rằng thẻ bắt đầu và kết thúc có thể giống nhau. Một điểm quan trọng nữa là một Piece sẽ không bao giờ trỏ vào các đoạn văn bản. Kiểu chung nhất của các Piece tương ứng trong một trang là kiểu các phần tử (element). Chúng ta mở rộng khái niệm hộp lược đồ ở trên thành các tam giác để đánh dấu các Piece và các dòng từ Piece đến các tag đánh dấu begin tag và end tag. Để tiện khi áp dụng lí thuyết vào lập trình trong việc truy cập thuộc tính của phần tử (element) , thuộc tính của begin tag được lưu trong trường biến của mỗi Piece. Vì vậy, ,một Piece rất giống vớI kiểu giá trị đối tượng. Hơn nữa chúng ta gắn tên

thuộc tính với mỗi Piece (trong trường hợp này các tên là các chuỗI "!--", "ul", "li", and "li" được viết trờn cỏc tam giác). Chú ý rằng, begin và end tag của các Piece chú thích sẽ tham chiếu đến cùng một đối tượng. Để phù hợp với định nghĩa trước, một Piece tham chiếu đến các thẻ bắt đầu, kết thúc không có tên thì sẽ được gọi là Piece không tên (unnamed piece)

Hình 6Chuyển đổI các Markup thành chuỗI các tag và PCData

Hình 7 Khái niệm Piece

Giống như tên của nó, một piece set là một tập các piece thuộc về cùng một trang. Nó là một tập theo nghĩa một piece có thể chỉ thuộc về một piece set (nhưng một piece có thể là thành viên của một vài piece set). Một piece set còn có thể xem là một danh sách vỡ cỏc piece trong một piece set có một trật tự nhất định. Việc sắp xếp trật tự các piece dựa trên các vị trí của các begin và and tag của một piece trong một trang. Chúng ta sắp xếp các piece gắn với trật tự từ trái qua phải của các begin tag.

Piece set đóng một vai trò quan trọng trong đại số đánh dấu. Nó hình thành nên nhiều toán tử cơ bản trong việc tách dữ liệu từ các trang web.

b) Các chức năng tìm kiếm:

Có một vài cách tạo ra các piece set:

• Tìm kiếm các phần tử đánh dấu bằng cách chỉ rõ rang tên của phần tử đang quan tâm (ví dụ như tìm tất cả các phần tử ‘a’ hoặc ‘li’)

• Tìm tất cả các mẫu kí tự phù hợp vớI biểu thức chính quy.

• Tìm kiếm tất cả các đoạn văn bản

• Tìm kiếm các đoạn giới hạn bởi các phần tử đánh dấu chỉ rõ tên. (ví dụ như tách một đoạn trong trang)

Tìm kiếm phần tử:

Chức năng tìm kiếm phần tử Elem sẽ trả lại một piece set của tất cả các phần tử trùng với tên chỉ ra trong hàm tìm kiếm. Chức năng này còn cho phép giới hạn không gian tìm kiếm trong một trang hay trong một piece. Vì vậy, một piece sẽ được hình thành khi một cặp begin và end tag trong không gian tìm kiếm trùng vớI tên của phần tử đánh dấu muốn tìm kiếm, và piece kết quả đó sẽ được tập hợp vào một piece set kết quả. Đoạn ví dụ sau đây sẽ lấy một trang về, tính toán một piece set của các phần tử có tên img trong trang đó, và xử lí để in ra thuộc tính src

của mỗI bức ảnh:

var images = Elem(P, "img"); every image in images do PrintLn(image.src)

end

Đoạn chương trình trên được thể hiện dựa trên ngôn ngữ WebL. Trong toàn bộ phần này chúng tôi sẽ sử dụng ngôn ngữ webl để thể hiện lí thuyết. Thực chất vấn đề ngôn ngữ sẽ không làm cho người đọc khó hiểu. Vỡ nó là một ngôn ngữ rất đơn giản và dễ hiểu. (adsbygoogle = window.adsbygoogle || []).push({});

Trong chương trình trờn, cõu lờnh every cho phép lặp trên tất cả các phần tử của piece set.

Chương III : Cài đặt mô đun wrapper trên hệ thông tích hợp dữ liệu

Một phần của tài liệu đồ án công nghệ thông tin Xây dựng wrapper cho nguồn dữ liệu Web trong hệ thống tích hợp dữ liệu (Trang 56)