Xây dựng gói phân tích Web

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 52)

Phân tích

Ta đưa ra hướng tiếp cận là sử dụng một bộ HTML Parser được cung cấp dưới dạng mã nguồn mở (module này do tác giả Simon Morier công bố)

Các lớp quan trọng

Tên trường Kiểu dữ liệu Độ dài Ràng buộc Mô tả

Id Int 4 Khóa chính ID của bản ghi

UserId Int 4 Không Null ID của khách hàng

HtmlWeb Lớp hỗ trợ lấy tài liệu HTML thông qua giao thức HTTP

HtmlDocument Chứa cấu trúc đầy đủ của tài liệu HTML nằm trong

bộ nhớ

HtmlNode Đại diện cho một nút HTML khi biểu diễn tài liệu

HTML trong mô hình DOM

HtmlTextNode Đại diện cho một nút văn bản trong tài liệu HTML

HtmlAttribute Đại diện cho một thuộc tính HTML được định

nghĩa theo chuẩn của W3C

HtmlNodeCollection Chứa một danh sách hay một tập hợp các nút

HTML

HtmlAttributeCollection Chứa một danh sách hay một tập hợp các thuộc tính HTML

Quan hệ kế thừa và kết tập của các lớp trên

+HtmlDocument() +Load(in html : string) +Parse() +CreateNode(in type) +CreateAttribute() -_documentnode -_streamencoding HtmlDocument +HtmlNode() +HasAttributes() : bool +HasChildNodes() : bool -_nodetype -_nextnode -_prevnode -_parentnode -_childnodes +InnerHtml +InnerText -ChildNodes HtmlNode +InnerHtml +OuterHtml +Text : string HtmlTextNode nodeChildren : HtmlNodeCollection nodeAttributes : HtmlAttributeCollection nodeDocument : HtmlNode 1 * 1 * 1 *

HtmlWeb: Cung cấp các phương thức cho phép tải trang HTML vào bộ nhớ theo nhiều cách, trang HTML có thể được tải từ một trang nằm trên ở cứng hoặc tải trực tiếp thông qua URL.

public HtmlDocument Load(string url)

{

//implement }

Tham số:

url : Địa chỉ URL của trang Web hoặc đường dẫn theo giao thức file

Trả về

Trả về một đối tượng HtmlDocument lưu trong bộ nhớ

Mô tả

Nếu truyền vào là một URL nó sẽ thực hiện gửi yêu cầu đến máy chủ để tải trang Web về. Đồng thời quá trình phân tích được thực hiện luôn.

HtmlDocument: Sau khi thực hiện tải một nội dung HTML về máy, chúng được lưu trữ trong một đối tượng HtmlDocument. Tất cả mọi thao tác đọc, sửa, xóa đều được thực hiện trong bộ nhớ và tác động trực tiếp lên đối tượng này. Chúng ta cũng có thể lưu nội dung của một đối tượng thành một tài liệu HTML dưới dạng file. Việc thực hiện phân tích một tài liệu HTML được thực hiện bên trong bởi một hàm phân tích. Nguyên lí làm việc của hàm được mô tả như trên lí thuyết.

Từ đối tượng HtmlDocument ta có thể truy xuất đến một nút bất kì trên cây DOM thông qua nút gốc tuơng ứng với một tài liệu HTML. Từ nút gốc có kiểu

HtmlNode bằng những phương thức được cung cấp bởi lớp đó ta có thể tìm được các nút khác trên cây.

HtmlNode : Lớp được xây dựng bên trong các phương thức cần thiết cho các thao tác trên cây. Đặc biệt để áp dụng cho thuật toán bóc tách bên trong một thực thể

HtmlNode cung cấp các thuộc tính truy xuất đến các thông tin cần thiết

ChildNodes: chứa danh sách các nút con.

ParentNode: nút cha của nút hiện tại

Name: tên của nút đồng thời là là tên của thẻ tương ứng.

InnerHtml: chứa phần HTML nằm bên trong thẻ tương ứng với nút

InnerText: chứa phần text nằm bên trong thẻ tương ứng

OutnerHtml: chứa phần HTML nằm bao cả thẻ của nút hiện tại Ví dụ :

Nút hiện tại tương ứng với thẻ <tr>

=> có ChildNodes chứa một nút tương ứng thẻ <td> ParentNode là nút tương ứng thẻ <tr>

Name là “tr”

InnerHtml là <td>AAA</td>

InnerText là AAA

OutnerHtml là <tr><td>AAA</td></tr>

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 52)