Luận văn Xây dựng ứng dụng Gadget

ĐẠI HỌC QUỐC GIA HÀ NỘI  
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ  
Trần Minh Hưng  
XÂY DỰNG ỨNG DỤNG GADGET  
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY  
Ngành: Công Nghệ Thông Tin  
HÀ NỘI - 2010  
ĐẠI HỌC QUỐC GIA HÀ NỘI  
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ  
Trần Minh Hưng  
XÂY DỰNG ỨNG DỤNG GADGET  
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY  
Ngành: Công Nghệ Thông Tin  
Cán bộ hướng dẫn:Nguyễn Thị Hậu  
HÀ NỘI - 2010  
LỜI CẢM ƠN  
Trước tiên, tôi xin gửi lời cảm ơn và lòng biết ơn sâu sắc đến cô giáo  
Nguyễn Thị Hậu người đã tận tình chỉ bảo hướng dẫn tôi trong suốt quá trình  
thực hiện khoá luận tốt nghiệp.  
Tôi xin bày tlời cảm ơn sâu sắc đến các thầy cô giáo đã giảng dạy tôi  
trong suốt bốn năm học qua, đã cho tôi nhiều kiến thức quý báu để tôi vững  
bước trên con đường học tập của mình.  
Tôi xin gửi lời cảm ơn tới các bạn trong lớp K51CD, và K51CHTTT đã  
ủng hộ khuyến khích tôi trong suốt quá trình học tập tại trường.  
Với lòng biết ơn chân thành, tôi xin gởi lời chúc sức khoẻ và những gì tốt  
đẹp nhất đến các thầy cô trong khoa, trong nhà trường, những bậc cha mẹ, anh  
chị đáng kính và toàn thể các bạn bè hiện đang còn học hoặc không còn học tại  
trường Đại Học Công Nghê-Đại Học Quốc Gia Hà Nội.  
Hà Nội, ngày 10 tháng 05 năm 20010  
Trần Minh Hưng  
i
TÓM TẮT NỘI DUNG  
Gadget lần đầu được Microsoft gii thiu trên Windows Vista, được xây  
dng nhằm hỗ trợ người sử dụng quản lý tài nguyên hthng, bnh, đĩa cng,  
lịch, đồng hồ, xem thông tin về thời tiết, tỷ giá, tin tức…Các tiện ích này được  
đặt trên thanh Windown Sidebar properties chiếm một phần trên desktop và có  
thể dễ dàng tùy chỉnh. Không chỉ với vẻ hào nhoáng bề ngoài, những thuận tiện  
mà Gadget đem đến đã làm say mê rất nhiều người.  
Trong khóa luận tốt nghiệp này, tác giả đề cập đến việc xây dựng một ứng  
dụng Gadget trên các hệ điều phổ biến như Windowns XP, Vista. Kết nối đến  
các dich vụ web để truy xuất dữ liệu hiện thị cho người sử dụng những thông  
tin như thời tiết, tỷ giá ngoại tệ, tin tức cập nhật…Hiện nay có rất nhiều trang  
web cung cấp dich vụ này, ứng dụng trong KTTN cho phép người dùng tùy  
chọn lấy thông tin được cung cấp bởi những trang web uy tín.  
Ngoài phương pháp lấy tin phổ biến thường được sử dụng từ những trang  
web cung cấp dữ liệu với đinh dạng chuẩn chia sẻ dữ liệu như XML, RSS feed.  
Khóa luận tốt nghiệp cũng đề cập và nghiên cứu đến phương pháp để lấy thông  
tin từ một trang web bất kỳ và cố gắng giải quyết bằng cách sử dụng các kĩ  
thuật của Web Spider đọc và trích xuất thông tin dựa vào các từ khóa và biểu  
thức chính quy (regular expression) để bóc tách một trang HTML …  
ii  
MỤC LỤC  
LỜI CẢM ƠN.................................................................................................... i  
TÓM TẮT NỘI DUNG .................................................................................... ii  
MỤC LỤC........................................................................................................ iii  
BẢNG CÁC KÍ HIỆU VIẾT TẮT....................................................................v  
DANH MỤC HÌNH V....................................................................................vi  
MỞ ĐẦU............................................................................................................1  
Chương 1: Giới thiệu Gadget............................................................................2  
1.1. Gadget..........................................................................................................2  
1.2. Cấu trúc một Gadget.....................................................................................3  
1.3. Phân loại.......................................................................................................5  
1.4. Dữ liệu mà Gadget sử dụng ..........................................................................6  
Chương 2: Các kiến thức nền tảng và công nghệ liên quan ............................7  
2.1. Giới thiệu về XML .......................................................................................7  
2.1.2. Tại sao lại sử dụng XML....................................................................8  
2.1.3. Những thành phần của một tài liệu XML ...........................................8  
2.1.4. Một tài liệu XML hợp lệ ....................................................................9  
2.2. Tìm hiểu RSS .............................................................................................10  
2.2.1. Tại sao nên sử dụng RSS..................................................................10  
2.2.2. Những điểm mạnh của RSS .............................................................11  
2.2.3. Ứng dụng RSS trong việc xây dựng Gadget.....................................12  
2.3. Xpath..........................................................................................................13  
2.3.1. Giới thiệu.........................................................................................13  
2.3.2. Cú pháp của Xpath...........................................................................13  
2.3. Tìm hiểu về AJAX......................................................................................15  
2.3.1. Mô hình DOM .................................................................................16  
2.3.2. Cơ chế hoạt động của AJAX............................................................17  
iii  
2.5. Web Spider.................................................................................................20  
2.5.1. Trích xuất thông tin sử dụng Web Spider.........................................21  
2.5.2. HTML Tidy .....................................................................................22  
2.5.3. CURL ..............................................................................................23  
2.5.4. Regular Expression ..........................................................................24  
Chương 3: Xây dựng ứng dụng Gadget .........................................................26  
3.1. Mô tả chức năng .........................................................................................26  
3.1.1. Chức năng xem thông tin thời tiết ....................................................26  
3.1.2. Chức năng xem thông tin về ngoại tệ ...............................................26  
3.1.3. Chức năng xem thông tin về giá vàng ..............................................26  
3.1.4. Chức năng xem tin tức .....................................................................27  
3.1.5. Chức năng tìm kiếm thông tin từ trang web bất k...........................27  
3.2. Cấu trúc của chương trình...........................................................................27  
3.3. Xây dựng luật để tìm kiếm thông tin từ trang web bất kỳ............................29  
3.4. Một số giao diện của ứng dụng...................................................................30  
Chương 4: Cài đặt và thực nghiệm.................................................................35  
4.1. Cài đặt ứng dụng ........................................................................................35  
4.2. Kết quả thực nghiệm...................................................................................35  
4.2.1 Thực nghiệm chức năng chương trình...............................................35  
4.2.2 Thực nghiệm trên hệ điều hành.........................................................36  
Chương 5: Kết Luận và hướng phát triển......................................................37  
5.1. Kết luận......................................................................................................37  
5.2.Các hạn chế của ứng dụng ...........................................................................37  
5.3. Hướng phát triển tiếp theo ..........................................................................37  
Tài liu tham kho...........................................................................................39  
iv  
BẢNG CÁC KÍ HIỆU VIẾT TẮT  
Kí hiệu  
AJAX  
Diễn giải  
Ansynchronous Javascript and XML  
Application Programming Interface  
Cascading Style Sheet  
API  
CSS  
DOM  
HTML  
HTTP  
REGEXP  
RSS  
Document Object Model  
Hyper Text Markup Language  
Hyper Text Transfer Protocol  
Regular Expression  
Really Simple Syndication  
XML  
Extensible Markup Language  
Extensible HyperText Markup Language  
World Wide Web Consortium  
XHTML  
W3C  
v
DANH MỤC HÌNH VẼ  
Hình 1: Minh họa Gadget ....................................................................................3  
Hình 2: Các file chính của một Gadget. ...............................................................5  
Hình 3: Phân loại Gadget.....................................................................................5  
Hình 4: Các nguồn dữ liệu mà Gadget sử dụng....................................................6  
Hình 5: Mô hình một Data application Gadget.....................................................7  
Hình 6: Minh họa cấu trúc dạng cây của file XML. ...........................................15  
Hình 7: Minh họa cấu trúc DOM của một trang HTML.....................................17  
Hình 8: Mô hình tương tác trong một ứng dụng web truyền thống.....................18  
Hình 9: Mô hình tương tác trong ứng dụng web dùng AJAX.............................19  
Hình 10: So sánh hai mô hình ứng dụng web: truyền thống và sử dụng AJAX ..20  
Hình 11 : Cấu trúc của ứng dụng Gadget...........................................................28  
Hình 12 : Giao diện hiện thị thông tin thời tiết...................................................30  
Hình 13 : Giao diện hiện thị thông tin tỷ giá ngoại tệ.........................................30  
Hình 14 : Giao diện hiện thị thông tin giá vàng..................................................31  
Hình 15 : Giao diện hiện thi tin tức và cửa sổ flyout..........................................31  
Hình 16 : Giao diện hiện thị thông tin thời tiết từ trang bất kỳ. ..........................32  
Hình 17: Giao diện tùy chọn thông tin thời tiết..................................................32  
Hình 18: Giao diện tùy chọn thông tin về tỷ giá ngoại tệ. ..................................33  
Hình 19: Giao diện tùy chọn thông tin về giá vàng. ..........................................33  
Hình 20: Giao diện tùy chọn về tin tức. .............................................................34  
Hình 21: Giao diện tùy chọn thông tin từ trang web bất kỳ................................34  
vi  
MỞ ĐẦU  
Với sự phát triển mạnh mẽ của Internet trong những năm gần đây, đặc biệt là  
sự bùng nổ của World Wide Web, Internet đang làm thế giới thay đổi từng ngày,  
từng giờ. Internet cùng với các dịch vụ hỗ trợ đã trở nên không thể thiếu cho hoạt  
động của từng cá nhân cho đến từng doanh nghiệp.Tuy nhiên cùng với sự phát triển  
và phổ cập của Internet thì thông tin ngày càng trở nên đa dạng và có sự trùng  
lặp.Việc lựa chọn và cập nhật thông tin một cách chính xác, nhanh chóng và thuận  
tiện là một vấn đề đặt ra.Gadget là một ứng dụng mà ngay từ khi ra mắt trên hệ điều  
hành Windowns Vista đã không chthể hiện được sự hữu ích và thuận tiện của nó  
mà còn góp phần trang trí cho màn hình destop của bạn. Gadget đem lại rất nhiều  
lợi ích và việc sử dụng nó hiện nay đã trở thành một nhu cầu rất phổ biến và thiết  
thực. Vì vậy mục tiêu của khóa luận là “Xây dựng ứng dụng Gadgetkết nối đến  
các dich vụ web để truy xuất dữ liệu và hiện thị ra cho người dùng cuối như: khai  
thác dịch vụ RSS, tỉ giá trao đổi ngoại tệ, tỉ giá vàng, thông tin thời tiết các vùng,  
miền…Ứng dụng cho phép người sử dụng chọn nguồn lấy thông tin từ các trang  
web uy tín hay một trang web khác mà người sử dụng mong muốn. Khóa luận tập  
chung nghiên cứu các phương pháp lấy thông tin tcác nguồn như RRS, XML  
feed, các Webservices hay Web page, tìm hiểu cách mà Gadget kết nối đến các dịch  
vụ để lấy thông tin cập nhật mới nhật và tương tác với người sử dụng.  
Kết cấu của khoá luận bao gồm các chương sau:  
- Chương 1: Giới thiệu về Gadget. Nêu các khái niệm cơ bản, phân loại, cấu  
trúc, và nguồn dữ liệu mà Gadget sử dụng.  
- Chương 2: Tìm hiểu, phân tích các kiến thức nền tảng và các công nghệ liên  
quan. AJAX, XML, RSS, Xpath, và các kĩ thuật sử dụng của Web Spider lấy thông  
tin từ một trang web bất kỳ.  
- Chương 3: Xây dựng ứng dụng Gadget. Mô tcác chức năng, các module,  
giao diện của chương trình.  
- Chương 4: Cài đặt và thc nghiệm Gadget.  
- Chương 5: Kết luận và hướng phát triển.  
1
Chương 1: Giới thiệu Gadget  
Gadget có thể chạy trên nhiểu nền tảng khác nhau, Có 3 dạng nền tảng Gadget  
của Microsoft đó là [8] :  
Sidebar Gadget hay còn gọi là Windown Sidebar: sử dụng trên màn hình  
desktop của máy tính để bàn hay xách tay.  
Web Gadget: chạy trên bất cứ trình duyệt web nào và thường được lưu trữ  
trong Live.com hoặc Live Spaces.  
SideShow Gadget: là các thiết bị phần cứng sử dụng trên máy tính xách  
tay hay các thiết bị thông minh di động…  
Trong khóa luận chỉ đề cập đến các ứng dụng Sidebar Gadget và gi tắt Gadget.  
Trong chương này tác giả sẽ trình bày nhưng khái niệm cơ bản vGadget, cấu trúc,  
phân loại, nguồn dữ liệu mà Gadget sử dung.  
1.1. Gadget  
Gadget là một tiện ích nhỏ gắn trên thanh sidebar hay bất kỳ vị trí nào bạn  
muốn trên màn hình desktop, cung cấp nhiều thông tin hữu ích như lịch, đồng hồ, nhật  
kí, CPU… ngoài ra có thể kết nối với dịch vụ web để cung cấp những dữ liệu doanh  
nghiệp, tỷ giá ngoại tệ,thông tin chứng khoán, thông tin thời tiết, tin tức cập nhật, bản  
đồ giao thông hay các album ảnh trực tuyến....Gadget cũng có thể tích hợp với các  
chương trình khác để cung cấp sự sắp xếp, tương tác hợp lý.  
2
Hình 1: Minh họa Gadget  
Gadget cho phép bạn truy cập nhanh vào các ứng dụng web hay truy cập vào  
chính chiếc máy tính của bạn. Nó làm giảm khoảng cách giữa thông tin hữu ích và  
người sử dụng bằng cách cung cấp thông tin trong một định dạng sẵn sàng trên  
Gadget, qua đó giúp người sử dụng tiết kiệm được thời gian và cũng như thao tác.  
Đối với nhiều người Gadget là một tiện ích tuyệt vời với nhiều tính năng mới  
trong hệ điều hành Windowns Vista. Gadget cung cấp các thông tin mà người dùng  
cần truy cập thường xuyên hay các công cụ với đa dạng chức năng sẵn sàng để sử  
dụng và dễ dàng truy nhập được thiết kế tiết kiệm tối đa bộ nhớ của CPU.  
Thực chất nó không phải một dạng file thực thi kiểu mới mà nó bao gồm HTML,  
CSS, XML, JavaScript,và các tập tin hình ảnh tất cả phối hợp để làm nên một Gadget.  
Có thể lưu trữ một trang web mini, gọi một dich vụ web, tích hợp một ứng dụng kinh  
doanh thương mại, hoặc thậm chí gọi các API hệ thống để tạo ra một ứng dụng tùy  
chỉnh.  
1.2. Cấu trúc một Gadget  
Gadget là một tiện ích được phát triển bằng cách sử dụng công nghệ web như  
là HTML, CSS, và JavaScript hoặc có thể sử dụng các công nghệ DHTML, AJAX  
và ActiveX COM cho chức năng cao cấp. Một tiện ích có thể được dùng như một  
ứng dụng HTML với các tính năng tiên tiến. Tất cả các giao diện sử dụng trong các  
tiện ích, các tiện ích chính của cửa sổ, các trang cài đặt, cũng như cửa sổ flyout, tất  
cả đều là trang HTML.  
Các file chính của một Gadget :  
-Gadget.xml : Đây là file rất quan trọng , nó lưu trữ các thông số cấu hình của  
Gadget, tên tác giả, phiên bản sản phẩm, bản quyền, thông tin URL.. dưới dạng thức  
XML.  
<hosts>  
<host name="sidebar">  
<base type="HTML" apiVersion="1.0.0" src="gadget.html" />  
<permissions>full</permissions>  
<platform minPlatformVersion="1.0" />  
3
<defaultImage src="" />  
</host>  
</hosts>  
</gadget>  
-Dòng bôi đen đầu tiên cho biết file html được đưa lên Gadget là file  
gadget.html ở cùng thư mục, dòng bôi đen thứ 2 xác định quyền hạn Gadget này là  
toàn quyền truy xuất hệ thống, nếu không đặt là full thì các chức năng truy xuất hệ  
thống của gadget có thể sẽ không dùng được do bị lỗi cấm truy nhập.  
-File [Gadget_Name].html : hầu hết các Gadget đều có 3 tập tin HTML cho cửa  
sổ chính (đây là file được xác định thông qua tag : src trong file XML chính, file  
HTML này sẽ được hiện thị khi Gadget được cài đặt), trang cài đặt và cửa sổ flyout.  
Mỗi trang HTML này include đến các file CSS và JavaScript tương ứng.  
-Các file .CSS : viết tắt của chữ Cascades Style Sheet, các file này được dùng để  
mô tả cách trình bày của các phân tử trong file HTML tương ứng, rất quen thuộc với  
các ứng dụng web.  
-Các file .JS : là thành phần cốt lõi của ứng dụng Gadget. Nếu như coi các thành  
phần HTML và cách trình bày CSS là khung xương và cơ thể thì Javascript là thành  
phần làm nên sức sống cho các ứng dụng Gadget. Nó chứa các đoạn mã thực thi các  
chức năng của Gadget, xử lí thông tin và hiện thị cho người dùng cuối.  
4
Hình 2: Các file chính của một Gadget.  
1.3. Phân loại  
Nếu dựa trên tiêu chí là các công nghệ để cấu thành lên gadget thì có tất cả 3 loại  
Gadget [8]:  
-Mini web application: ứng dụng web nhỏ sử dụng HTML,CSS và các script (  
Vbscript,Javascript...)  
-Data application : ứng dụng có truy xuất dữ liệu sử dụng HTML ,DHTML,  
DOM, AJAX. Gadget loại này có thể kết nối đến các dịch vụ web để truy xuất dữ liệu  
và hiển thị ra cho người dùng cuối như: khai thác dịch vụ RSS, chỉ số chứng khoán,  
thông tin thời tiết các vùng miền…Đây cũng là Gadget mà khóa luận sẽ xây dựng ở  
các chương tiếp theo của khóa luận.  
-Mini utilities : có tác dụng như một tiện ích dùng ActiveX object, Gadget API  
và DHTML…ví dụ như các Gadget đo CPU, hiển thị đồng hồ số… hay thậm chí là  
các tiện ích truy xuất tài nguyên hệ thống và rất nhiều công việc khác.  
Hình 3: Phân loại Gadget  
5
1.4. Dữ liệu mà Gadget sử dụng  
Gadget cung cấp thông tin và tương tác với người sử dụng một cách độc đáo. Nó  
có thể truy xuất thông tin tnhiều nguồn khác nhau :  
RSS/XML .  
Các trang web.  
Các dịch vụ web.  
Tài nguyên hệ thống : file, folder.  
Và đương nhiên truy xuất được vào các hệ quản trị dữ liệu nhờ ActiveX  
object [8]…  
Hình 4: Các nguồn dữ liệu mà Gadget sử dụng.  
6
Chương 2: Các kiến thức nền tảng và công nghệ  
liên quan  
Trong chương trước chúng ta đã biết ứng dụng mà khóa luận hướng đến là một  
Data application Gadget truy xuất đến các nguồn dữ liệu là XML, RSS hay các trang  
web sử dụng DOM, AJAX, Xpath…để phân tích lấy dữ liệu trả về sau đó hiện thị trên  
Gadget.  
Hình 5: Mô hình một Data application Gadget.  
Trong chương này khóa luận strình bày những nét cơ bản vcác công nghệ  
này, những điểm nội bật nhất và vai trò của chúng trong việc xây dựng ứng dụng  
Gadget.  
2.1. Giới thiệu vXML  
Như trình bày trong phần trước thì một trong những nguồn truy xuất dữ liệu  
chính của Gadget là các file XML. Vậy thì XML là gì? Và vì sao nó lại được sử dụng  
trong việc lấy thông tin từ các trang web?  
XML (Extensible Markup Language) ra đời tháng 2/1998, là ngôn ngữ có kiến  
trúc gần giống HTML nhưng XML nhanh chóng trở thành một chuẩn phổ biến trong  
7
việc chuyển đổi thông tin qua các trang web sử dụng giao thức HTTP. Trong khi  
HTML là ngôn ngữ chủ yếu về hiện thị dữ liệu thì XML lại phát triển mạnh về việc  
truyền tải ,trao đổi và thao tác dữ liệu bằng XML. XML đưa ra một định dạng chuẩn  
cho cấu trúc của dữ liệu hoặc thông tin bằng việc tự định nghĩa định dạng của tài liệu.  
Bằng cách này dữ liệu được lưu trữ bằng XML sẽ độc lập với việc xử lí.Vì vậy XML  
ra đời đáp ứng được yêu cầu ngày càng cao của các nhà lập trình trong vấn đề trao đổi  
và xử lí thông tin. Bản thân của XML tuy không có gì khó hiểu, nhưng các công cụ  
chuẩn được định ra để làm việc với XML như Document Object Model - DOM,  
XPath, XSL, v.v.. thì rất hữu hiệu, và chính các chuẩn nầy được phát triển không  
ngừng .  
2.1.2. Tại sao lại sử dụng XML  
Trong qua trình xây dựng và phát triển, XML đã đối mặt và đối đầu với nhiều  
thử thách trong việc thuyết phục người lập trình rằng XML là sự lựa chọn hàng đầu vì  
nó dễ hiểu, dễ đọc và dễ dàng thực hiện. Sau đây là một số lợi ích mà việc sử dụng  
XML đem lại:  
-XML có thể tách rời dữ liệu . Sử dụng XML, dữ liệu được chứa trong các tập tin  
XML riêng biệt.  
-XML có thể mô tả thông tin của những đối tượng phức tạp mà cơ sở dữ liệu  
quan hệ không thể giải quyết được.  
-XML có thể dùng để chuyển đổi dữ liệu giữa các hệ thống không tương thích.  
-XML được dùng để chia sẻ dữ liệu với những tập tin văn bản đơn giản dễ hiểu .  
-XML cũng được dùng để lưu trữ dữ liệu, có thể làm cho dữ liệu của chúng ta  
hữu ích hơn.  
Như vậy chúng đã biết được lợi ích và vai trò của XML trong vấn đề lưu trữ và  
trao đổi thông tin. Vấn đề tiếp theo là cấu trúc một tài liệu XML sẽ như thế nào và làm  
sao để Gadged có thể lấy thông tin từ nó.  
2.1.3. Những thành phần của một tài liệu XML  
Mục đích của việc tổ chức thông tin là để co người có thể đọc và hiểu được  
những gì mà nó muốn chuyển tải .Bây giờ chúng ta tổ chức tập tin theo định dạng một  
tài liệu XML một cách đơn giản nhất  
<?xml version=”1.0” encoding=”UTF-8”?>  
8
<students>  
<student>  
<id>06020188</id>  
<full-name>Trần Minh Hưng</full-name>  
</student>  
</students>  
Như vậy bằng cách sử dụng định dạng XML người dùng có thể hiểu được và biết  
được tập tin trên đang mong muốn truyền tải nội dung gì. Chúng ta có thể sử dụng  
trình soạn thảo đơn giản nhất là notepad để soạn thảo XML.Theo định dạng trên ta  
thấy tài liệu XML tuy rất đơn giản nhưng quy định của nó lại rất nghiêm ngặt.  
Khai báo : Mỗi một tài liệu XML có một chỉ thị khai báo  
<?xml version=”1.0”?>  
Định nghĩa tài liệu XML tuân theo chuẩn của W3C đây là phiên bản 1.0  
Chú thích : được khai báo như sau:  
<!-- Chú thích -->  
Phần tử (Elements): Một tài liệu XML được cấu thành từ những phần tử.Một  
phần tử có thẻ mở và thẻ đóng, Giữa thẻ mở và thẻ đóng là nội dung của phần tử đó.  
Phần tử có thể chứa dữ liệu hoặc lồng vào một phần tử khác.  
Phần tử gốc (Root) : Trong tài liệu XML chỉ có một phần tử gốc, và phần tử này  
sẽ chứa tất cả những phần tử của tài liệu XML do chúng tạo ra.  
Thuộc tính (Attributes): Như đã trình bày ở trên, một phần tử có thể chứa dữ  
liệu hoặc chứa phần tử khác hoặc cả hai. Bên cạch đó, phần tử có thể rỗng, khi đó nó  
có thể chứa thuộc tính. Một thuộc tính chỉ là một sự lựa chọn để gắn dữ liệu đến phần  
tử. Một thuộc tính đặt trong thẻ mở của phần tử và chỉ ra giá trị của nó bằng cách sử  
dụng cặp “name=value”.  
2.1.4. Một tài liệu XML hợp lệ  
Như khóa luận đã đề cập ở trên một tài liệu XML hợp khuôn dạng (well-formed)  
là yếu tố đâu tiên khi tạo lập một tài liệu XML. Hợp khuôn dạng ở đây có nghĩa là một  
9
tài liệu chỉ có một nút gốc, mỗi phần tử phải có thẻ m, thẻ đóng phải lồng nhau chính  
xác, tên thuộc tính phân biệt chữ hoa chữ thường và chxuất hiện một lần trong thẻ  
mở. Nhưng một tài liệu well-formed không có nghĩa là nó hợp lệ. Muồn kiểm tra sự  
hợp lệ của tài liệu XML ta phải dựa vào Document Type Definition (DTD) hoặc  
Schema.XML. Việc sử dụng một tài liệu XML hợp lệ sẽ giúp cho Gadget ddàng  
trong việc truy xuất dữ liệu từ các nguồn này.  
2.2. Tìm hiểu RSS  
Truy nhập các trang web thông tin lớn như Reuters, CNN, Daily Yahoo  
News… bạn sẽ bắt gặp những biểu tượng “vừa quen, vừa lạ” mang tiêu đề RSS  
(hoặc RSS Feed). Vậy thực chất RSS là gì? Vì sao Gadget lại sử dụng nguồn dữ liệu  
này?  
RSS viết tắt của cụm từ “Rich Site Summary” (tóm tắt giàu thông tin) hoặc  
"Really Simple Syndication" (đồng bộ hoá cực kỳ đơn giản); được xây dựng dựa  
trên ngôn ngữ đánh dấu mở rộng XML nhằm tạo ra các kênh thông tin (feed) và  
chuyển tới cho người đọc. RSS do Netscape phát triển vào cuối những năm 90s,  
hoạt động theo nguyên tắc tinh giản, rút gọn các trang tin điện tử (chỉ lấy tiêu đề,  
loại bỏ ảnh, định dạng trang trí…). Nội dung này có thể được chuyển trực tiếp tới  
người đọc hoặc “gắn” trên các trang web khác với đường dẫn ngược trở lại trang  
web ban đầu .  
Thông thường, có thể bạn sẽ khó có thể tìm thêm gì trong nguồn RSS ngoài  
một danh sách khoản mục hoặc nội dung. RSS thường được sử dụng trong việc chia  
sẻ các đầu mục tin, tuy nhiên nó có thể ứng dụng trên hầu hết các dạng nội dung  
web. RSS tạo cho người quản lý web (Webmaster) khả năng tự động cập nhật trong  
những phần nhất định của một trang web.  
Để hỗ trợ người đọc, hiện đã có rất nhiều phần mềm đóng vai trò trung gian,  
“biên dịch” nội dung các “feed” và chuyển chúng sang định dạng dễ đọc hơn. Ngoài  
ra, thẻ lệnh cấu thành RSS đã được chuẩn hoá, nên RSS có thể được đọc ở nhiều  
hình thức và trên nhiều thiết bị ví dụ điện thoại di động, thiết bị hỗ trợ cá nhân kỹ  
thuật số- PDA, vv...  
2.2.1. Tại sao nên sử dụng RSS  
Đồng bộ hoá thông tin (RSS) gợi ra mô hình “xuất bản và đăng ký” (publish and  
subscribe). Trong đó, những nội dung được xuất bản từ một nguồn có thể được cung  
cấp qua nhiều kênh theo phương thức “đồng bộ hoá" (syndicated). Lợi thế nổi bật của  
10  
hình thc này là thông tin được “đẩy” đi liên tục từ nguồn tới các đối tượng người đọc.  
RSS trở thành một mắt xích quan trọng trong việc tạo ra các luồng truy nhập tới trang  
web gốc. Lấy ví dụ, bạn có thể thấy trên một trang web nào đó một tiêu đề tin hấp dẫn.  
Khi bạn kích chuột vào tin đó, bạn sẽ được liên kết tới RSS của trang web đó. Trong  
thế giới Internet, nơi có hàng triệu trang web đang lôi kéo người sử dụng truy cập, bất  
cứ công cụ nào có thể giúp bạn tạo ra các kết nối với người dùng đều có vai trò quan  
trọng sống còn. Bản thân nhà cung cấp thông tin cũng không sợ “mất bản quyền thông  
tin” vì các tiêu đề trong RSS feed đều liên kết ngược trở lại trang web xuất phát.  
Một trong những lý do quan trọng nhất cho việc ứng dụng RSS là khả năng của  
nó trong việc tiếp cận tới người dùng mà không cần phải phát động một chiến dịch  
quảng cáo rầm rộ và tốn kém. Nếu bạn có những thông tin hấp dẫn trên trang web của  
mình, RSS có thể giúp bạn giới thiệu và truyền tải tới người dùng và thu hút sự quan  
tâm của khách hàng.  
Trong khi đó, người đọc cũng thực sự hưởng lợi. Họ có thể tiếp cận thông tin  
theo ý thích xét cả ở ba tiêu chí: ở đâu- khi nào- và như thế nào. Người đọc tiết kiệm  
được không ít thời gian vì RSS feed lưu trữ những đầu mục thông tin ngắn gọn, liên  
tục được cập nhật. Đối với những ai chỉ đơn thuần sử dụng Internet và không cần tới  
tính năng quảng cáo của RSS, công nghệ này lại giúp họ tìm kiếm các thông tin quan  
trọng qua các nguồn RSS, thậm chí từ các trang web mà họ ít khi hoặc không bao giờ  
truy nhập.  
2.2.2. Những điểm mạnh của RSS  
-RSS cập nhật thông tin: Ưu việt hơn email, đăng ký một RSS feed, thông tin từ  
nhà cung cấp sẽ liên tục được cập nhật; bạn không phải vào lại trang web hoặc đăng ký  
một RSS feed khác.  
-RSS tiết kiệm về chi phí. Phí chuyền tải và phân phối giảm đáng kể khi dùng  
RSS. Băng thông được giải phóng đáng kể với lượng thông tin truyền tải lớn và không  
cần nhiều email hay các mã lệnh định dạng cầu kỳ. Bản thân trên một trang web, bạn  
chỉ cần một khoảng không khiêm tốn để đặt biểu tượng cho RSS feed.  
-RSS tương hỗ với nhiều định dạng. Ngoài những định dạng thông thường như  
HTML, ASP… RSS còn có tính mở, hỗ trợ nhiều định dạng ngôn ngữ, nhiều thiết bị  
đầu cuối (máy tính, điện thoại di động, PDA..).  
11  
-RSS độc lập với email. Tuy nhiên, các RSS feed vẫn có thể được “thiết kế” để  
nằm ngay trong email của bạn, bổ sung thêm những tính năng mới cho công cụ nhận  
thông tin điện tử truyền thống.  
-RSS cho phép tổ chức nội dung. Thông tin có thể dễ dàng lưu trữ, phân loại và  
sắp xếp theo từng chủ đề một cách hoàn toàn tự động.  
-Người nhận RSS hoàn toàn chủ động.Đăng ký và chối bỏ một news feed hoàn  
toàn phụ thuộc vào bản thân người sử dụng. Điểm này xác lập sự thuận tiện của RSS  
khi thực tế, không ít người đành phải chấp nhận “chung thân” một khi đăng ký một bản  
tin thư.  
-RSS đảm bảo quyền cá nhân. Người đăng ký RSS feed không phải cung cấp  
email cho nhà cung cấp thông tin- mà nhiều khả năng điểm tới cuối cùng là cơ sở dữ  
liệu của các công ty chuyên về quảng cáo.  
-RSS có thể tái sử dụng. Thông tin trong RSS hoàn toàn có thể tái sử dụng cho  
nhiều mục đích: cung cấp cho các kênh thông tin khác (nằm trong feed khác), tích hợp  
vào các thư viện động hoặc nguyên liệu phục vụ quá trình học tập v.v...  
-RSS an toàn. Xuất phát từ phương thức truyền tải, RSS không thể mang theo  
virus hoặc trojan như newsletter hoặc các tệp tin đính kèm. Trong trường hợp các feed  
có mang các đoạn mã độc hại, người sử dụng có thể dễ dàng “phân vùng” và chủ động  
loại bỏ thông tin.  
-RSS linh hoạt trong cách cung cấp thông tin. Người sử dụng tiết kiệm được thời  
gian, thông tin được cung cấp ở dạng tóm tắt (thường chỉ là các tiêu đề- title). Chính vì  
vậy, hàm lượng thông tin truyền tải lớn trong mỗi feed (loại bỏ các loại hình quảng cáo  
pop-up, định dạng mang tính trang trí…). Bạn chỉ click vào những siêu liên kết để đến  
với nội dung chi tiết mà mình thực sự quan tâm. Ngay khi đã được gửi đi (đồng bộ hoá  
dữ liệu), các nhà cung cấp vẫn có thể chỉnh sửa, cập nhật thông tin trong các RSS feed.  
2.2.3. Ứng dụng RSS trong việc xây dựng Gadget  
Hiện nay, sử dụng RSS trên web trở thành một hiện tượng thực sự. Trong những  
ngày đầu phát triển của web, các trang web cũng được liên kết với nhau song dữ liệu  
giữa chúng thì thực sự hiếm khi được chia sẻ. Hiển nhiên, quan niệm đã thay đổi theo  
thời gian. Các trang web sử dụng RSS tăng lên nhanh chóng với những lý do rõ ràng và  
hợp lý. Cùng với sự phát triển của RSS và những lợi ích to lớn mà nó đem lại thì hầu  
hết các trang web lớn đều hỗ trợ công nghệ này và chúng chính là nguồn cung cấp  
thông tin đa dạng cho các Gadget .  
12  
Ứng dụng công nghệ RSS, xây dựng chức năng lấy tin tức cập nhật từ mới nhất  
từ các trang báo lớn. Người dùng có thể xem cùng một lúc các trang web này mà  
không cần vào trực tiếp trang đó.  
2.3. Xpath  
2.3.1. Giới thiệu  
Qua phần trình bày trên, chúng ta đã biết được cấu trúc và cú pháp của XML  
tương đối đơn giản và bản chất của việc lấy dữ liệu từ các nguồn XML, RSS chính là  
việc phân tích một tài liệu XML. Bước tiếp theo là tìm hiểu cách nào xlý một tài liệu  
XML để lấy ra thông tin mong muốn.  
Như vậy để xử lí một tài liệu XML, chương trình ứng dụng phải có cách di  
chuyển bên trong tài liệu để lấy ra giá trị của các phần tử (Elements) hay thuộc tính  
(Attributes). Do đó ngôn ngữ XML Path được ra đời, mà chúng ta gọi tắt là Xpath.  
Xpath đóng một vai trò quan trọng trong việc truy vấn dữ liệu cho các chương trình  
ứng dụng vì nó cho phép ta lựa chọn hay sàng lọc ra những phần tử nào mình muốn để  
trao đổi hay hiện thị [1].  
Nếu khi làm việc với cơ sở dữ liệu ta dùng các phát biểu SQL như  
SELECT…FROM table WHERE để trích ra một mẩu tin từ một bảng, thì khi làm  
việc với tập tin XML, Xpath cho ta những những biểu thức (expressions) về điều kiện  
giống như mệnh đề WHERE trong SQL. Một tài liệu XML được xem như là một sự  
thể hiện của cấu trúc phân cấp ở dạng cây của nhiều phần tử, mỗi phần tử được xem  
như là một node của cây, XPath đem lại khả năng duyệt các node trên cây hoặc lựa  
chọn chúng theo các tiêu chí nào đó, dựa trên các mối quan hệ như cha - con, tổ tiên -  
con cháu. Một biểu thức XPath (Xpath expression) có thể chọn một node hoặc một tập  
hợp các node, hoặc nó có thể trả lại một giá trị dữ liệu dựa trên một hoặc nhiều node  
trong tài liệu. XPath hiện có 2 phiên bản là XPath 1.0 và XPath 2.0.  
2.3.2. Cú pháp của Xpath  
Chúng ta cùng xem một ví dụ về một tài liệu XML [1]:  
<?xml version="1.0"?>  
<Order OrderNo="1047">  
<OrderDate>2002-03-26</OrderDate>  
13  
<Customer>John Costello</Customer>  
<Item>  
<Product ProductID="1" UnitPrice="70">Chair</Product>  
<Quantity>6</Quantity>  
</Item>  
<Item>  
<Product ProductID="2" UnitPrice="250">Desk</Product>  
<Quantity>1</Quantity>  
</Item>  
</Order>  
XPath xem XML như một cây, với ví dụ trên sẽ được biểu diễn dưới dạng cây  
sau:  
14  
Hình 6: Minh họa cấu trúc dạng cây của file XML.  
Đường dẫn tuyệt đối.  
Nếu đường dẫn XPath bắt đầu bởi dấu / thì có nghĩa đây là một đường dẫn tuyệt  
đối bắt đầu từ phần tử gốc.  
Trong hình ở trên, bây giờ chúng ta muốn chọn nút Order ta viết như sau:  
Cú pháp nguyên: /child::Order.  
Cú pháp tắt: /Order .  
Đi ra nhánh con Custumer bằng XPath như sau:  
Cú pháp nguyên: /child::Order/child::Custumer.  
Cú pháp tắt: /Order/Custumer.  
Trong trường hợp muốn đi đến thuộc tính của nút thì chúng ta cần phải chỉ rõ từ  
khóa Attribute trong cú pháp nguyên hoặc @ trong cú pháp tắt.  
Để lấy thuộc tính OrderNo của nút Order ta dùng cú pháp XPath như sau:  
Cú pháp nguyên: /child::Order/Attribute::OrderNo.  
Cú pháp tắt: /Order/@OrderNo.  
Đường dẫn tương đối  
Khi chúng ta muốn trích một phần tử nào đó mà chúng ta chỉ biết tên của phần tử  
này chứ chúng ta không biết là phần tử này nằm ở vị trí nào thì chúng ta có thể dùng  
đường dẫn tương đối để làm điểu này. Chúng ta dùng dấu // để chỉ cho trình phân tích  
biết đây là đường dẫn tương đối.  
Ví dụ, để trích các phần tử có tên là Product chúng ta viết như sau:  
Cú pháp nguyên: //child::Product  
Cú pháp viết tắt: //Product  
Khi chúng ta viết như thế này thì khi đi qua trình phân tích sẽ truy tìm đến các  
phần tử có tên là Product  
2.3. Tìm hiểu về AJAX  
15  
AJAX (Ansynchronous Javascript and XML) không phải là một công nghệ mới  
hay một ngôn ngữ lập trình mới mà thực ra nó là sự kết hợp của một loạt các công  
nghệ khác nhau [4]:  
HTML+CSS với vai trò hiển thị thông tin  
Mô hình tương tác và hiển thị động DOM (Document Object Model)  
Trao đổi và truy cập/tác động lên thông tin sử dụng XML và XSLT  
Nhận thông tin không đồng bộ với đối tượng XMLHttpRequest  
Javascript với vai trò kết hợp 4 công nghệ trên lại với nhau  
AJAX là công nghệ được sử dụng trong Gadget, đóng vai trò trung gian tương  
tác với các dich vụ web và giao diện người dùng. Sử dụng đối tượngXMLHttpRequest  
để gửi các yêu cầu đến các dich vụ web lấy dữ liệu trả về một cách không đồng bộ.  
Các dữ liệu trả về từ các dịch vụ web này là file XML, RSS hay một phần của trang  
HTML chứa thông tin người dùng mong muốn. Sau đó sử cấu trúc DOM để phân tích  
kết quả trả về và hiện thị lên trang HTML. Trong các phần tiếp chúng ta sẽ tìm hìm  
hiểu kỹ hơn về công nghệ này.  
2.3.1. Mô hình DOM  
DOM (Document Object Model) là một giao diện lập trình ứng dụng API độc  
lập với platform và dựa theo kỹ thuật lập trình hướng đối tượng để mô tả tài liệu. Là  
ngôn ngữ cho phép sử dụng các đoạn mã JavaScript để truy xuất động và cập nhật nội  
dung, cấu trúc của một tài liệu. Đây là một khả năng đặc biệt hữu ích để viết một ứng  
dụng AJAX. Trong một ứng dụng AJAX, sự thay đổi giao diện người dùng chủ yếu  
được tạo ra bởi DOM.  
DOM được chia làm các phần khác nhau (Core, XML, và HTML) và nhiều cấp  
(DOM Level 1/2/3):  
Core DOM - định nghĩa tập các đối tượng chuẩn cho tất cả tài liệu có cấu  
trúc  
XML DOM - định nghĩa tập các đối tượng chuẩn cho tài liệu XML  
HTML DOM - định nghĩa tập các đối tượng chuẩn cho tài liệu HTML  
16  
Sử dụng DOM, cấu trúc của tài liệu có thể được phân rã theo cấu trúc cây và thao  
tác theo các node. Hình dưới đây mô tả cấu trúc DOM của một trang HTML:  
Hình 7: Minh họa cấu trúc DOM của một trang HTML.  
2.3.2. Cơ chế hoạt động của AJAX  
Điểm khiến cho AJAX trở thành một hiện tượng chính là ở chỗ nó là một sự kết  
hợp hoàn hảo các công nghệ hoàn toàn khác nhau để giải quyết một vấn đề tưởng như  
không thể giải quyết - mà việc áp dụng lại rất đơn giản. Nó cho phép tạo các ứng dụng  
web tốt hơn, nhanh hơn và có tính tương tác hơn.  
Cơ chế hoạt động của AJAX: nó đóng vai trò như là một lớp trung gian giữa giao  
diện bạn thấy trên trình duyệt và máy chủ xử lý thông tin. Có thể mô tả cách thức hoạt  
động của AJAX như sau [4]:  
AJAX thực hiện tương tác với máy chủ bằng cách sử dụng đối tượng  
XMLHttpRequest, nhận kết quả về dưới dạng XML và phân tích kết quả  
bằng công nghệ DOM.  
Tương tác giữa AJAX và giao diện người dùng được thực hiện thông qua  
các mã Javascript và XHTML + CSS.  
Các ứng dụng AJAX xoay quanh một tính năng có tên là XMLHttpRequest. Ở  
các ứng dụng web truyền thống, khi người dùng có một cần thay đổi dữ liệu trên trang  
web, yêu cầu thay đổi được gửi về server dưới dạng HTTP request (hay còn gọi  
17  
postback), server sẽ xử lý yêu cầu này và gửi trả response chứa các thông tin dưới  
dạng HTML và CSS, trang HTML này sẽ thay thế trang cũ. Qui trình này được mô tả  
là nhấp-chờ và tải lại (click-wait-and-refresh): ví dụ người dùng sau khi nhấn một nút  
“Submit” trên trang web phải chờ cho đến khi server xử lý xong mới có thể tiếp tục  
công việc.  
Hình 8: Mô hình tương tác trong một ứng dụng web truyền thống..  
AJAX cho phép tạo ra một Ajax Engine nằm giữa giao tiếp này. Khi đó, các yêu  
cầu gửi resquest và nhận response do Ajax Engine thực hiện. Thay vì trả dữ liệu dưới  
dạng HTML và CSS trực tiếp cho trình duyệt, web server có thể gửi trả dữ liệu dạng  
XML và Ajax Engine sẽ tiếp nhận, phân tách và chuyển hóa thành XHTML + CSS  
cho trình duyệt hiển thị.  
Một trong những điểm mấu chốt của công nghệ AJAX là bạn không tương tác  
trực tiếp với máy chủ như cách truyền thống mà là qua một lớp trung gian Ajax  
Engine. Có thể bạn sẽ hỏi phải chăng như vậy thì sẽ làm cho cơ chế hoạt động phải  
qua thêm một bước trung gian và sẽ làm chậm hơn nữa quá trình tương tác? Thắc mắc  
trên là hoàn toàn có lý, tuy nhiên, thực tế lại ngược lại Lý do là:  
Không phải lúc nào bạn cũng cần phải tương tác với máy chủ. Như trong  
trường hợp của Gmail, một khi giao diện của Gmail đã được tải về xong  
(để ý khoảng thời gian ngắn từ khi bạn đăng nhập cho đến khi giao diện  
của Gmail xuất hiện) thì những tác vụ như chuyển từ thư mục này sang  
18  
xem thư mục khác không nhất thiết phải hỏi lại máy chủ (tất nhiên với  
điều kiện dữ liệu đã có sẵn  
Bằng cách chỉ nhận những thông tin cần thiết (ở dạng XML), dung lượng  
truyền tải giữa máy tính của bạn và máy chủ sẽ giảm đi rất nhiều. Sau khi  
bạn giao diện đã được tải về 1 lần, Ajax sẽ không cần phải tải lại toàn bộ  
giao diện đó mỗi khi tương tác với máy chủ. Thay vào đó, AJAX sẽ gởi  
yêu cầu đến máy chủ và nhận kết quả từ máy chủ về những gì đã thay đổi  
sau khi máy chủ thực hiện yêu cầu đó. AJAX sau đó sẽ thông báo cho  
phần giao diện (thông qua các lời gọi Javascript) thực hiện các thay đổi  
tương ứng trên giao diện.  
Tương tác giữa phần giao diện và AJAX là tương tác nội bộ bên trong  
trình duyệt, giúp cho các thay đổi sẽ được thể hiện gần như tức thì.  
Hình 9: Mô hình tương tác trong ứng dụng web dùng AJAX.  
Rõ ràng điểm khác biệt là thay vì phải tải cả trang web thì với AJAX ta chỉ cần  
tải về phần của trang web muốn thay đổi. Điều này giúp cho ứng dụng web của phản  
hồi nhanh hơn, thông minh hơn. Ngoài ra, điểm đặc biệt quan trọng trong công nghệ  
AJAX nằm ở chỗ Asynchronous - bất đồng bộ - tức là gửi yêu cầu của mình tới server  
và tiếp tục thực thi tác vụ hiện tại mà không cần chờ trả lời. Khi nào server xử lý xong  
yêu cầu nó sẽ báo hiệu và ta có thể đón để thể hiện những thay đổi cần thiết.  
19  
Hình 10: So sánh hai mô hình ứng dụng web: truyền thống và sử dụng AJAX  
2.5. Web Spider  
Trong phần trước chúng ta đã biết phương pháp Gadget sử dụng để lấy thông  
tin từ một web là dùng AJAX kết nối đến máy chủ của trang web này lấy về các file  
XML hoặc RSS chứa thông tin mong muốn, sau đó sử dụng DOM, Xpath để phân  
tích. Vì vậy mà Gadget mới chỉ có thể lấy được thông tin từ các trang web cung cấp  
các file XML hay RSS và địa chỉ hyperlink trỏ đến các file này chúng ta phải biết  
trước. Trong phần này khóa luận sẽ trình bày các kiến thức về Web Spider để xây  
dựng tính năng tìm kiếm thông tin từ một trang web bất kỳ do người dùng nhập vào  
cho Gadget.  
Một Web Spider là một chương trình máy tính có thể “duyệt web” một cách tự  
động và theo một phương thức nào đó được xác định trước. Các Web Spider thường  
bắt đầu với một danh sách URL của các trang web để ghé thăm đầu tiên. Khi ghé  
20  
thăm một URL, Web Spider sẽ đọc nội dung trang web lọc ra thông tin cần thiết,  
sau đó lại tìm tất cả các hyperlink có trong trang web đó và đưa các URL được trỏ  
tới bới các hyperlink đó vào danh sách URL. Da vào danh sách URL này, Web  
Spider lại tiếp tục quá trình duyệt đệ quy để ghé thăm tất cả các URL chưa được  
duyệt đến. Quá trình này được gọi là Web Spider hoặc là Web Crawler, các Web  
Spider còn được gọi là các robot (bot). Thường thì các Web Spider được tạo ra để  
phục vụ cho một mục đích, tác vụ nào đó. Ví dụ các máy tìm kiếm (Search Engine)  
sử dụng Web Spider để tải các trang web, các trang web này sau đó được Search  
Engine đánh chỉ mục để có thể cho kết quả nhanh hơn khi được tìm kiếm.  
2.5.1. Trích xuất thông tin sử dụng Web Spider  
Về bản chất, Web Spider chính là quá trình duyệt đệ quy một đồ thị cây có các  
node là các trang web. Tùy thuc vào chiến lược của Web Spider, các node có thể  
được duyệt theo chiều sâu hoặc duyệt theo chiều rộng. Trong thực tế, Web Spider  
sẽ phải đối diện với rất nhiều vấn đề khó khăn như: kích thước khổng lồ của World  
Wide Web, các trang web HTML được viết không chuẩn, hạn chế ghé thăm một  
URL đã được ghé thăm trước đó, các trang web động, nội dung các trang web được  
cập nhật thường xuyên v.v…  
Tuy nhiên báo cáo khóa luận này sẽ tập trung vào việc chuyển đổi nội dung  
không cấu trúc của các trang web (chủ yếu được viết bằng HTML) sang thành nội  
dung có cấu trúc, sau đó bóc tách, trích xuất phần thông tin mà người dùng quan  
tâm trên một trang web chứ không cố gắng tìm kiếm càng nhiều trang web trên  
World Wide Web càng tốt như các Web Spider khác.  
Một số kỹ thuật được sử dụng trong Web Spider có thể kể ra như:  
So trùng: một kỹ thuật đơn giản nhưng khá hiệu quả để tìm kiếm các phần  
nội dung chữ có sự tương đồng với nhau (do nội dung trang web chủ yếu  
ở dạng ký tự). Kỹ thuật này thường sử dụng biểu thức chính quy  
(regular expression) để so trùng và tìm kiếm.  
Phân tích cấu trúc DOM: phân tích nội dung HTML của trang web và xây  
dựng một cây DOM (Document Object Model), giúp Web Spider có thể  
duyệt các node trên cây này và chỉ lấy ra phần nội dung mà nó cần.  
Lập trình HTTP: ta có thể lấy được nội dung trang web bằng cách gửi một  
yêu cầu HTTP đến web server, cũng giống như cách web browser làm.  
21  
2.5.2. HTML Tidy  
HTML là ngôn ngữ không phân biệt hoa thường (hai thẻ <td> và <TD> đều là  
một). Các phần tử HTML cần có một thẻ mở và một thẻ đóng, tuy nhiên điều này  
không luôn luôn đúng, có nhiều phần tử không cần thẻ đóng, ví dụ các thẻ<br>, <hr>  
và <li>. Ngoài ra khi lồng nhau, các phần tử HTML cũng không cần thiết phải lồng  
nhau theo đúng thứ tự (tức là thẻ nào mở trước thì phải đóng sau) ví dụ sau là hợp lệ  
trong HTML [2]:  
<p>đoạn văn này được <b>in đậm</p></b>  
Sự lồng nhau không đúng thứ tự của các phần tử HTML được gọi là overlapping  
(phủ lên nhau), mặc dù điều này không được phép trong đặc tả SGML, nhưng lại được  
chấp nhận bởi hầu hết các trình duyệt hiện nay.  
Từ các đặc điểm trên ta có thể nhận thấy HTML không phải là một ngôn ngữ có  
cú pháp chặt chẽ, các đặc điểm như không cần đóng thẻ hoặc không cần lồng nhau  
đúng thứ tự sẽ là các trở ngại cho công việc đọc và phân tích văn bản HTML (HTML  
parsing), đặc biệt nếu sử dụng phương pháp tìm kiếm so trùng. Chính vì vậy, chúng ta  
cần phải chuyển đổi nội dung viết bằng HTML sang một định dạng ngôn ngữ khác có  
sự chặt chẽ hơn về cú pháp, điều này sẽ đem lại thuận lợi hơn cho quá trình xử lý về  
sau. Một ngôn ngữ đánh dấu được định nghĩa ra để thay thế cho HTML đó chính là  
XHTML.  
Việc bóc tách, trích xuất dữ liệu hiệu quả hoàn toàn phụ thuộc vào sự chính xác  
của việc chỉ ra vị trí tương đối của phân vùng dữ liệu cần trích xuất trong nội dung  
HTML. Tuy nhiên HTML không phải là một ngôn ngữ có cấu trúc tốt, cần phải  
chuyển nội dung này sang dạng khác có cấu trúc hơn, đó chính là XHTML, với sự trợ  
giúp của HTML Tidy. Hơn nữa XHTML tận dụng được những điểm mạnh của XML,  
nên cũng đem lại các khả năng truy vấn tìm kiếm node mạnh mẽ bằng Xpath.  
HTML Tidy là một ứng dụng phần mềm nguồn mở, giúp “sửa chữa” các tài liệu  
HTML bị lỗi cú pháp (bad HTML) hoặc chuyển hẳn chúng sang các tài liệu XHTML.  
HTML Tidy ban đầu được phát triển đầu tiên bởi Dave Raggett thuộc tổ chức W3C,  
sau này thì HTML Tidy trở thành một dự án của Sourceforge. HTML Tidy bao gồm  
một công cụ chạy trong môi trường command line và một gói thư viện TidyLib có  
chức năng tương tự để tích hợp vào các ngôn ngữ khác. Hiện nay TidyLib đã được tích  
hợp như một gói mở rộng từ phiên bản 5.0b3 trở đi (Tidy extension), điều này giúp lập  
trình viên có thể sử dụng ngay các khả năng của HTML Tidy như phân tích (parse),  
22  

Tải về để xem bản đầy đủ

pdf 47 trang yennguyen 10/05/2025 320
Bạn đang xem 30 trang mẫu của tài liệu "Luận văn Xây dựng ứng dụng Gadget", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • pdfluan_van_xay_dung_ung_dung_gadget.pdf