Ứng dụng không lọc được các trang web phức tạp sử dụng các đoạn mã clientside như JavaScript để thực hiện một HTTP POST method, postback các tham số ẩn
để chuyển trang mà URL không bị thay đổi (công nghệ ASP.NET), hoặc cũng chính
những đoạn mã JavaScript nhưng trang web chỉ load lại phần nội dung cần thiết mà
không khiến trình duyệt phải load một trang mới (công nghệ AJAX).
47 trang |
Chia sẻ: lylyngoc | Lượt xem: 2681 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Luận văn Xây dựng ứng dụng gadget, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
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.
full
4
-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.
5Hì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
61.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 từ nhiề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.
7Chươ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 sẽ trình bày những nét cơ bản về cá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 về XML
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
8việ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
9
06020188
Trần Minh Hưng
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
Đị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:
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
10
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à chỉ xuấ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 dễ dà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
11
hình thức 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..).
12
-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 .
13
Ứ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 xử lý 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]:
2002-03-26
14
John Costello
Chair
6
Desk
1
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:
15
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
16
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
17
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
18
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
19
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.
20
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é
21
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. Dựa 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 thuộc 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
là ở 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.
22
2.5.2. HTML Tidy
HTML là ngôn ngữ không phân biệt hoa thường (hai thẻ và đề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ẻ,
và . 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]:
đoạn văn này được in đậm
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),
23
kiểm tra (validate) và sửa chữa (repair) các tài liệu HTML, XHTML và XML. Sau đây
là một số ví dụ về các khả năng của HTML Tidy [3]:
Thêm các thẻ đóng bị thiếu và sửa các thẻ đóng không khớp.
heading
subheading
sẽ được chuyển thành:
heading
subheading
Bổ sung ký tự “/” vào thẻ đóng của các thẻ anchor.
References
sẽ được chuyển thành:
References
Bổ sung các thẻ đóng bị thiếu trong các danh sách
1st list item
2nd list item
sẽ được chuyển thành:
1st list item
2nd list item
Chuyển nội dung HTML thành XHTML, đây là một khả năng được sử dụng phổ
biến của HTML Tidy.
2.5.3. CURL
24
Để tìm thông tin từ một trang web ta tìm đến các phân vùng con hoặc click vào
trang chứa thông tin chi tiết, công việc này chính là để chuyển từ trang này sang trang
khác.Tuy nhiên đối tượng trên trang web mà có thể click chuột vào được, không phải
lúc nào cũng là một hyperlink mà đó có thể là một nút bấm hoặc một đối tượng điều
khiển nào đó khác.Và cũng tùy thuộc vào công nghệ sử dụng của trang web đó mà
không phải bao giờ khi chuyển trang thì URL của trang mới cũng khác URL của trang
cũ. Trang web có thể sử dụng các đoạn mã client-side như JavaScript để thực hiện một
HTTP POST method, postback các tham số ẩn (hidden input) để chuyển trang mà
URL không bị thay đổi (công nghệ ASP.NET), hoặc cũng chính những đoạn mã
JavaScript nhưng trang web chỉ load lại phần nội dung cần thiết mà không khiến trình
duyệt phải tải lại một trang mới (công nghệ AJAX). Tuy nhiên mọi công nghệ vẫn
phải dựa vào một nền tảng đó là HTTP. Nhờ đặc điểm này mà việc tạo ra một công cụ
giả lập được việc “click chuột” của người duyệt web là hoàn toàn khả thi, với điều
kiện chúng ta phải cung cấp cho công cụ biết cụ thể các thông tin cần thiết như: cần
chuyển đến URL nào, cần GET hoặc POST các tham số gì, hoặc cần thực thi các đoạn
mã JavaScript nào, v.v…
Thư viện của CURL sẽ giúp chúng ta đạt được một phần của các mục tiêu này.
CURL là một project phần mềm nguồn mở cũng bao gồm một công cụ command line
và một gói thư viện. Ứng dụng command line là CURL, được xây dựng dựa trên gói
thư viện LIBCURL. CURL được tạo ra để hỗ trợ truyền tải các tập tin có cú pháp URL
(gửi và nhận), thông qua các giao thức phổ biến như FTP, HTTP, HTTPS, TELNET,
LDAP, FILE v.v… CURL cũng hỗ trợ các phương thức như HTTP POST, HTTP
PUT, FPT uploading, proxy, xác thực username / password v.v…
2.5.4. Regular Expression
Khi đã vào được trang chi tiết chứa những thông tin, công việc cuối cùng là chọn
ra thông tin mong muốn và hiện thị ra cho người sử dụng.Có thể thấy rằng công việc
này khá dễ dàng đối với con người, tuy nhiên đối với máy tính lại là cả một vấn đề
không nhỏ. Các trang web được viết ra để phục vụ cho đối tượng chính là con người,
các nội dung thể hiện trên trang web luôn có ngữ nghĩa riêng của nó mà chỉ có con
người mới có thể hiểu được.
Tuy nhiên, để ý một điều rằng, các trang web tuy rằng rất đa dạng và phong phú,
nhưng các trang web cùng cung cấp một loại thông tin lại có những phần thường được
thiết kế với một cấu trúc tương tự nhau, gọi là web template. Các web template dựa
vào cách thiết kế, sắp đặt các phần tử HTML, kết hợp với CSS, đem lại một cấu trúc
25
nhất quán cho toàn bộ trang web. Các trang này sẽ thường có chung một template, tức
là sự sắp xếp các thẻ HTML trong các trang này hầu hết là giống nhau. Hơn nữa dựa
vào những từ khóa xuất hiện với tuần xuất cao kết hợp với web template trong những
trang cùng cung cấp một lĩnh vực thông tin nào đó chúng ta có thể xây dựng được luật
để bóc tách thông tin mong muốn sử dụng biểu thức chính quy.
Biểu thức chính quy (Regular Expression ) viết tắt là Regexp, Regex hay Regxp
là một chuỗi miêu tả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định [9].
Biểu thức chính quy thường được dùng trong các trình biên tập văn bản và các tiện ích
tìm kiếm và xử lý văn bản dựa trên các mẫu được quy định Regexp cung cấp các
phương pháp xử lý văn bản mạnh mẽ, linh hoạt, và hiệu quả. Mẫu các ký hiệu so khớp
bao quát của biểu thức chính quy cho phép bạn nhanh chóng phân tích cú pháp một
lượng lớn các văn bản cụ thể để tìm các mẫu tự, trích xuất, chỉnh sửa, thay thế hoặc
xóa một chuỗi con; tạo ra tập hợp các trích xuất để báo cáo và nhiều ứng dụng sử dụng
chuỗi văn bản (như mã HTML, phân tích file log, tiêu đề HTTP). Regexp không phải
là một kĩ thuật mới, nó xuất phát từ môi trường UNIX, đuợc dùng với PERL được
Microsoft sử dụng vàoWindows,và hiện nay thì nó hầu như được sử dụng với những
ngôn ngữ kịch bản.
Ví dụ bạn muốn lấy tất cả các siêu liên kết (hyperlink) trong một trang web. Thu
lấy các siêu liên kết trong một trang web về khái niệm thì hoàn toàn dễ nhưng thông
thường thì khá khó khăn trong thực tế. Vấn đề là các trang web đi theo một định dạng
bán chuẩn và chứa đựng rất nhiều biến trạng. Một siêu liên kết có thể được đưa vào
đặc tính href của một anchor (), đặc tính onclick của một phần tử JavaScript như
nút nhấn. Bản thân URL có thể là tương đối hay đầy đủ hoặc nó có thể chỉ là một
bookmark (là một thẻ anchor có href bắt đầu với ký tự #).
Dưới đây là một biểu thức chính quy thu lấy tất cả các giá trị href từ một trang
web:
HrefRegex = new Regex (/href\\s*=\\s*”([^”]*)/g)
Sau đó chúng ta sẽ kiểm tra URL thu được có phải là là bookmark hay không và
xác định xem nó là đường dẫn tương đối hay tuyệt đối. Nếu chúng là đường dẫn tương
đối chúng ta chuyển chúng về đường dẫn đầy đủ bằng cách thêm vào đường dẫn hiện
tại.
26
Chương 3: Xây dựng ứng dụng Gadget
3.1. Mô tả chức năng
Từ những tìm hiểu và phân tích trong chương trước, ứng dụng Gadget được xây
dựng với chức năng chính sau đây:
Chức năng cơ bản: Gadget cung cấp bốn chức năng để người dùng lựa chọn
xem thông tin về thời tiết, tỷ giá trao đổi ngoại tệ, giá vàng, và tin tức.
Chức năng nâng cao: Gadget có khả năng tìm kiếm kiếm tự động thông tin thời
tiết từ một trang web bất kỳ.
3.1.1. Chức năng xem thông tin thời tiết
Người sử dụng chọn trong của sổ settings lấy thông tin từ một trong các trang
web sau :
Sau đó nhập vào tên bất kỳ thành phố nào muốn xem thông tin thời tiết và chọn
vào nút tìm kiếm, Gadget sẽ hiện thị tên những thành phố mà trang web này cung cấp
thông tin thời tiết giống với từ khóa người dùng nhập vào. Người dùng chọn vào tên
thành phố muốn xem, sau khi cửa sổ settings được đóng lại thông tin sẽ được hiện thị
trên Gadget.
Thông tin thời tiết trong ngày sẽ được mặc định hiện thị trên Gadget, tuy nhiên
người dùng có thể tùy chọn hiện thị thời tiết của ngày hôm sau hay không hoặc hiện
thị cả tên thành phố và đất nước trên Gadget.
3.1.2. Chức năng xem thông tin về ngoại tệ
Người sử dụng có thể chọn trong của sổ settings xem thông tin từ một trong các
trang web sau :
Sau đó lực chọn loại ngoại tệ muốn xem thông tin, sau khi của sổ settings được
đóng lại thông tin về ngoại tệ mà người dùng lựa chọn sẽ được hiện thị trên Gadget.
3.1.3. Chức năng xem thông tin về giá vàng
Người sử dụng có thể chọn trong của sổ settings xem giá vàng từ một trong các
trang web : ,
Sau khi lựa chọn xem giá theo đơn vị một gram vàng hay một lượng vàng, thông
tin về giá vàng sẽ được hiện thị trên Gadget.
27
3.1.4. Chức năng xem tin tức
Người sử dụng có thể chọn trong của sổ settings xem tin tức từ một trong các
trang web : , ,
Sau khi lựa chọn vào mục trên trang web muốn xem thông tin, các tiêu đề của
trang này sẽ được hiện thị trên Gadget.
Để xem tin tức chi tiết hơn click chuột vào Gadget để bung ra cửa sổ flyout hoặc
click vào các dòng tiêu đề trình duyệt sẽ tự động mở link trang hiện thị thông tin người
dùng muốn xem.
3.1.5. Chức năng tìm kiếm thông tin từ trang web bất kỳ
Người sử dụng nhập địa chỉ của trang web và tên thành phố muốn tìm thông tin
thời tiết. Gadget sẽ tự động tìm kiếm trên trang trên web này và thông báo kết quả cho
người sử dụng biết. Nếu tìm thấy thông tin sẽ được hiện thị trên Gadget.
3.2. Cấu trúc của chương trình
28
Hình 11 : Cấu trúc của ứng dụng Gadget.
Gadget là một tập hợp các file HTML, XML, JavaScript, CSS, và hình ảnh đóng
gói vào một tập tin. Một gói với phần mở rộng là .gadget thực sự là một file Zip có
chứa những tập tin này để chạy các tiện ích.
Gadget.xml : Đây là tập tin manifest, trong đó có tất cả các thông tin cần thiết
bởi các bên để xác định và hiển thị gadget.Gadget này là gì ? Làm thế nào để chạy tiện
ích này. Nó chứa các siêu dữ liệu của gadget dưới dạng thức XML như tên tác giả,
thông tin URL, bản quyền, biểu tượng của tiện ích, tên hiển thị, và bất kỳ trang web
liên kết với tiện ích này. Nó tham chiếu đến một tập tin gadget.html. Được sử dụng để
chạy các gadget.
Gadget.html : Nó giống như trang chủ của một Website, bạn sẽ thấy trang này
khi Gadget được gọi (docked trong sidebar hay undocked trên màn hình desktop). Nơi
sẽ hiện thị toàn bộ những thông tin mà bạn quan tâm.
Settings.html : Cửa sổ cho phép người dùng tùy biến ứng dụng của gadget này.
Ví dụ như lựa chọn nguồn cung cấp, thành phố, dữ liệu hiện thị trong chức năng xem
thông tin thời tiết của Gadget.
Flyout.html : Đây là một cửa sổ tùy chọn sẽ được bung ra khi người dùng yêu
cầu, chứa thông tin chi tiết liên quan trong trang gadget.html.
File CSS : Chứa các tập tin css lưu lại cấu hình định dạng, trình bày của các
trang HTML tương ứng trong Gadget.
File image : Chứa các file ảnh được sử dụng trong Gadget.
File settings.ini : File lưu lại thông tin cấu hình, các tùy chọn của người sử dụng,
như nguồn lấy dữ liệu, nội dung hiện thị,…Gadget khi được gọi sẽ đọc nôi dung trong
file này để load lại trang HTML.
File include : Thành phần cốt lõi của Gadget chứa 2 file Javascript main.js và
settings.js được include trong 2 file .html tương ứng.
-Main.js: chứa các đoạn mã Javascipts kết nối đến các dịch vụ web bằng cách sử
dụng đối tượng XMLHttpRequest của AJAX lấy kết quả trả về là một file XML, RSS
hoặc HTML. Sau đó sử dụng công nghệ DOM, Xpath kết hợp các biểu thức chính quy
và thư viện của HTML Tidy để phân tích kết quả trả về lọc ra thông tin mong muốn.
Cuối cùng là xuất dữ liệu lên trang HTML hiện thị cho người sử dụng.
29
-Settings.js: chứa các đoạn mã xử lí các tùy chọn của người dùng, đọc, ghi các
tùy chọn này vào file settings.ini.
3.3. Xây dựng luật để tìm kiếm thông tin từ trang web bất kỳ
Ứng dụng cung cấp thông tin về tỷ giá ngoại tệ, tỷ giá vàng, và thời tiết các
vùng miền…từ một số trang web bằng cách phân tích thông tin một cách thủ công.
Dựa vào đó tác giả tác giả xây dựng luật để tìm kiếm thông tin trên từ một trang
web bất kỳ do người dùng nhập vào. Tuy nhiên luật này vẫn còn ở mức đơn giản,
nên hiệu quả lọc thông tin chưa cao. Phần này sẽ trinh bày luật tìm kiếm thông tin
được xây dựng trong KLTN.
Bước 1 : Để lấy được thông tin từ trang web bất kỳ ứng dụng tiến hành lọc
thông tin trên trang HTML. Do HTML có những lỗi về cú pháp mà các trình duyệt
web hiện nay vẫn chấp nhận như đã trình bày trong phần trước nên ta cần sửa lại
các lỗi này bằng cách sử dụng thư viện HTML Tidy.
Bước 2 : Tiếp theo ứng dụng cố gắng lọc ra các hyperlink trên trang này bằng
cách sử dụng biểu thức chính quy và kiểm tra xem URL mà hyperlink này trỏ đến có
phải là file XML hay RSS chứa thông tin chúng ta cần lấy không vì hầu hết các trang
web cung cấp thông tin trực tuyến đều hỗ trợ công nghệ này. Mỗi một tài liệu XML
đều có một chỉ thị khai báo còn RSS là
hoặc (tùy thuộc vào công nghệ mà trang web đó sử dụng) nên
việc kiểm tra có phải là file XML hay RSS là đơn giản.
Tuy nhiên vẫn còn một vấn để mà ứng dụng phải xử lí, ví dụ chúng ta muốn tìm
thông tin thời tiết của thành phố A từ trang Web B nào đó. Người dùng phải nhập vào
tên thành phố A vào trang Web B trên form nhập liệu và dữ liệu nhập vào được truyền
lên địa chỉ URL theo phương thức GET hoặc POST. Nếu chỉ lọc dựa vào biểu thức
chính quy thi sẽ không lọc được địa chỉ URL này. Vì vậy Gadget sử dụng thư viện
CURL để tự động nhập vào nội dung mà người dùng tìm kiếm giả lập một cú click
chuột sau đó lấy nội dung trả về từ trang Web và quay lại bước 1.
Bước 3 : Sau khi tìm được file XML hoặc RSS công việc còn lại là phân tích để
lọc ra dữ liệu và kiểm tra xem có đó phải dữ liệu mà người dùng mong muốn hay
không. Ta biết rằng các thành phần cấu thành nên một tài liệu XML, RSS là các phần
tử, mỗi phần tử có thẻ mở và thẻ đóng được lồng nhau chính xác và nằm giữa thẻ mở
và thẻ đóng này là nội dung của phần tử, các thuộc tính của phần tử hoặc một phần tử
khác. Tên của thuộc tính chỉ được xuất hiện một lần trong trong một phần tử, còn tên
30
phần tử có thể xuất hiện nhiều lần trong tài liệu và các phần tử trùng tên này có cấu
trúc bên trong là giống nhau. Đặc biệt là các file XML, RSS cung cấp cùng một loại
thông tin xuất hiện sự trùng lặp về tên các phần tử, thuộc tính và cả cấu trúc trình bày.
Đối với nhưng trang web tiếng việt thì file XML, RRS đa số sử đều sử dụng các từ
khóa tiếng anh. Ví dụ thông tin về thời tiết thường được đặt trong các thẻ như weather,
weatherdata, weathertext, weatherforecast, các thuộc tính như temperature, condition,
current, skytext hoặc các từ viết tắt .Vì vậy ứng dụng xây dựng tập các từ khóa lưu
lại tên của phần tử và thuộc tính này để tìm kiếm đường dẫn đến nội dung của chúng.
Sau đó kiểm tra xem có phải nội dung cần tìm không ví dụ như thông tin thời tiết sẽ
chứa các từ liên quan đến thời tiết như Rian, Sunny, Cloudy, Snow…
3.4. Một số giao diện của ứng dụng
Hình 12 : Giao diện hiện thị thông tin thời tiết
Hình 13 : Giao diện hiện thị thông tin tỷ giá ngoại tệ.
31
Hình 14 : Giao diện hiện thị thông tin giá vàng.
Hình 15 : Giao diện hiện thi tin tức và cửa sổ flyout.
32
Hình 16 : Giao diện hiện thị thông tin thời tiết từ trang web bất kỳ.
Hình 17: Giao diện tùy chọn thông tin thời tiết.
33
Hình 18: Giao diện tùy chọn thông tin về tỷ giá ngoại tệ.
Hình 19: Giao diện tùy chọn thông tin về giá vàng.
34
Hình 20: Giao diện tùy chọn về tin tức.
Hình 21: Giao diện tùy chọn thông tin từ trang web bất kỳ.
35
Chương 4: Cài đặt và thực nghiệm.
4.1. Cài đặt ứng dụng
Môi trường phát triển ứng dụng: hệ điều hành Microsoft Windowns XP,
Windowns Vista.
Windowns Vista: Khi chạy Gadget sẽ được đặt trong thanh Sidebar của Vista và
ứng dụng sẽ nằm tại thư mục sau :
C:\user\\app data\local\microsoft\windows side bar\gadgets
C:\ là ổ đĩa cài WindownsVista
là tên người dung hiện thời.
WindownsXP: Để chạy được Gadget chúng phải cài đặt thanh sidebar cho XP
tại địa chỉ :
Pack_by_joshoon.zip.
Khi chạy Gadget ứng dụng sẽ nằm tại thư mục:
D:\Program Files\Windows Sidebar\Gadgets
D:\ là ổ đĩa cài Windowns Xp.
4.2. Kết quả thực nghiệm
4.2.1 Thực nghiệm chức năng chương trình
Tiến hành thực nghiệm ứng dụng với các chức năng cơ bản lấy tin thời tiết, giá
vàng, tỷ giá ngoại tệ, tin tức trên các nguồn ứng dụng cung cấp và chức năng tìm kiếm
thông tin thời tiết với một số nguồn khác thu được kết quả như sau:
Các chức năng cơ bản lấy được tin hiện thị trên Gadget chính xác, cập nhật so
với nguồn cung cấp và thông báo khi không kết nối được đến trang web hoặc không có
dữ liệu cho người sử dụng biết.
Chức năng tìm kiếm tin thời tiết từ đia chỉ trang web do người dùng nhập vào
còn hạn chế và đạt tỷ lệ không cao :
-Ứng dụng có thể lấy được tin từ các trang có cung cấp file XML, RSS và trang
Web mà người dùng nhập vào phải chứa link đến file XML, RSS này hoặc liên kết đến
36
trang web chứa các file này thông qua form (có thể cần nhập giá trị vào thành phần của
form) sử dụng phương thức GET và POST.
Ví dụ như : , ,
-Ứng dụng không lọc được các trang web phức tạp sử dụng các đoạn mã client-
side như JavaScript để thực hiện một HTTP POST method, postback các tham số ẩn
để chuyển trang mà URL không bị thay đổi (công nghệ ASP.NET), hoặc cũng chính
những đoạn mã JavaScript nhưng trang web chỉ load lại phần nội dung cần thiết mà
không khiến trình duyệt phải load một trang mới (công nghệ AJAX).
Ví dụ như : …
-Ứng dụng không lọc hết được thông tin từ các file XML, RSS chứa thông tin
thời tiết khi chúng sử dụng các thẻ và thuộc tính có tên không thuộc tập từ khóa của
ứng dụng hoặc nội dung trong các thẻ, thuộc tính này là các kí tự hay con số mà ý
nghĩa của nó là do trang web quy định. Ví dụ như 1: Rain, 2 : Sunny ….
4.2.2 Thực nghiệm trên hệ điều hành
-Ứng dụng có thể cài đặt và chạy trên hệ điều hành Windown Vista, Windown
XP.
-Các chức năng của ứng dụng đều được thực thi và cho cùng một kết quả trên các
hệ điều hành này.
37
Chương 5: Kết Luận và hướng phát triển.
5.1. Kết luận
Khóa Luận Tốt Nghiệp “Xây dựng ứng dụng Gadget” cũng đã đạt được một
số kết quả nhất định, tuy rằng không thể tránh khỏi những hạn chế và thiếu sót:
Về mặt kiến thức: Tác giả cũng đã tìm hiểu được một lượng kiến thức khá bao
quát về việc xây dựng một ứng dụng Gadget, các kiến thức tổng quan về các chuẩn
phổ biến trong việc chia sẻ dữ liệu như XML, RSS, các kĩ thuật sử dụng của Web
Spider lọc nội dung một trang web, tìm hiểu các kĩ thuật thiết kế, lập trình web phổ
biến hiện nay, cụ thể như CSS, AJAX, các phương thức giao tiếp truyền nhận dữ liệu
giữa máy chủ và máy khách trong ứng dụng web.
Về mặt hiện thực: Tác giả cũng đã xây dựng được một ứng dụng Gadget chạy
được trên các hệ điều hành phổ biến hiện nay lấy thông tin cập nhật về thời tiết, giá
vàng, ngoại tệ, tin tức từ các trang web uy tín.Thực hiện được các kĩ thuật cơ bản trong
việc phân tích, lọc dữ liệu từ các file XML, RSS, nâng cao hơn là khả năng phân tích
nội dung của một trang HTML bất kỳ.
5.2.Các hạn chế của ứng dụng
Ứng dụng xây dựng tập các từ khóa liên quan và tìm đường dẫn đến nội dung của
tài liệu còn hạn chế nên khả năng tìm kiếm được thông tin là không cao.
Ngoài ra ứng dụng không lọc được nội dung HTML từ các trang web phức tạp sử
dụng các đoạn mã client-side như JavaScript thực hiện một HTTP POST method,
postback các tham số ẩn để chuyển trang (URL không bị thay đổi), hoặc sử dụng công
nghệ AJAX.
Gadget sử dụng code Javascript, một ngôn ngữ lập trình dựa trên nguyên mẫu với
cú pháp phát triển từ C. Giống như C, JavaScript có khái niệm từ khóa, do đó,
JavaScript gần như không thể được mở rộng, không có nhiểu thư viện hỗ trợ ngôn ngữ
này. Vì vậy việc phát triển ứng tìm kiếm thông tin là khó khăn.
5.3. Hướng phát triển tiếp theo
Với những gì đã làm được và những hạn chế mà khóa luận mắc phải thì hướng
phát triển tiếp theo của khóa luận như sau:
38
Xây dựng ứng dụng có khả năng tổng hợp tin tức tự động từ các trang web, phân
tích được nội dung các nguồn tiếng anh cũng như tiếng việt và lọc ra thông tin trùng
lặp.
Xây dựng một Spider engine riêng dưới dạng web browser giả lập, mục đích để
lọc nội dung các trang sử dụng các đoạn mã client-side nh thực hiện một HTTP POST
method, postback các tham số ẩn để chuyển trang (URL không bị thay đổi), hoặc sử
dụng công nghệ AJAX.
Ngoài ra, trong lĩnh vực trích xuất thông tin cũng có một hướng nghiên cứu khác
khá gần gũi với lĩnh vực khai phá dữ liệu (data mining) và trí tuệ nhân tạo (artificial
intelligence). Hướng nghiên cứu này sẽ xây dựng, phát triển các công cụ có khả năng
tự động tìm kiếm và trích xuất thông tin một cách hoàn toàn tự động, không cần hoặc
cần rất ít sự can thiệp của con người, và hơn nữa các công cụ này còn có khả năng tự
học (machine learning) thông qua các dữ liệu mẫu, nhờ đó nó có thể ứng dụng được
trên nhiều loại trang web có cấu trúc khác nhau một cách tự động. Ưu điểm của hướng
tiếp cận này là tính tự động cao, có thể chạy được trên nhiều website khác nhau (cùng
lĩnh vực) một cách tự động. Tuy nhiên các công cụ kiểu này thường chỉ có thể sử dụng
cho các lĩnh vực cụ thể và phổ biến, chẳng hạn như lĩnh vực tin tức trực tuyến.
39
Tài liệu tham khảo
[1] Nguyễn Trung Hiếu. Đi lại trong XML bằng Xpath.
(17/04/2002).
[2] Dave Raggett. Clean up your Web pages with HTML Tidy.
(04/08/2000).
[3] Gadgets API. (10/05/2010).
[4] Jesse James Garrett. Ajax: A New Approach to Web Application.
(18/02/2005).
[5] K. Scott Allen. Developing Gadgets for the Windows Sidebar.
(01/01/2007).
[6] Michael Schrenk. Webbots, Spiders, and Screen Scrapers. No Starch, San
Francisco, USA, 2007.
[7] Norman Walsh. A Technical Introduction to XML .
(03/12/1998).
[8] Rajesh Lal. Creating Vista Gadgets: Using HTML, CSS and JavaScript with
Examples in RSS, AJAX, ActiveX (COM). Sams, 2008.
Các file đính kèm theo tài liệu này:
- LUẬN VĂN- XÂY DỰNG ỨNG DỤNG GADGET.pdf