Tải bản đầy đủ (.docx) (25 trang)

Kỹ thuật thu thập dữ liệu tự động WebCrawler

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (367.61 KB, 25 trang )

MỞ ĐẦU
Ngày nay nhờ sự bùng nổ của công nghệ thông tin, lịch sử nhân
loại đã bước sang một trang mới. Những thành tựu của ngành công nghệ
thông tin là vô cùng to lớn, nó đã chi phối và làm thay đổi mọi mặt của
đời sống xã hội, làm cho cuộc sống của con người văn minh, hiện đại
hơn. Sự ra đời của internet chính là bước tiến vĩ đại của nhân loại, là yếu
tố quan trọng bậc nhất chi phối cuộc sống của chúng ta ngày nay. Nhờ
có internet thế giới trở nên “phẳng” hơn, ở mọi nơi trên trái đất chúng ta
đều có thể học tập và tìm kiếm thông tin.
Theo guồng quay của cuộc sống, thế giới internet ngày càng rộng lớn
và phong phú hơn. Cứ mỗi phút trôi qua có thêm hàng triệu trang web
được sinh ra để làm giàu cho vốn tài nguyên tri thức của nhân loại.
Nhưng cũng chính vì thế mà việc chọn lọc, tìm kiếm thông tin lại trở nên
khó khăn hơn. Với kho dữ liệu đồ sộ như internet, vấn đề trích xuất và
tổng hợp thông tin đã trở thành vấn đề thực sự cấp thiết hiện nay. Nếu giải
quyết được vấn đề này chúng ta sẽ loại bỏ được một chướng ngại lớn
trên con đường tổng hợp thông tin của nhân loại.
Đề tài đặt ra vấn đề tìm hiểu về trình thu thập dữ liệu trên web và
bước đầu sẽ xây dựng một ứng dụng có khả năng tổng hợp dữ liệu từ
các trang báo điện tử lớn. Đề tài nếu thành công sẽ là bước đi không
nhỏ giúp cho việc tổng hợp thông tin trở nên đơn giản hơn, giảm được
nhiều chi phí công sức so với việc tổng hợp thủ công, và là tiền đề để xây
dựng nên một hệ thống máy tìm kiếm, giống như google, cho người Việt
Nam.
Nội dung của đề tài sẽ tập trung vào các mục tiêu chính sau:
- Đưa ra được một cái nhìn tổng quát về trình thu thập dữ liệu web
(web crawler).
- Xây dựng một ứng dụng website tổng hợp thông tin có khả năng
thu thập các bản tin từ các trang báo lớn như Dân trí.
Để giải quyết được các mục tiêu này, khóa luận được chia thành hai
chương lớn:


Chương 1: Tìm hiểu về trình thu thập web
Trong chương này, chúng ta sẽ lần lượt tìm hiểu các khái niệm cơ
bản trong trình thu thập dữ liệu trên web. Phần lớn nội dung trong
chương này sẽ đi sâu vào việc tìm hiểu các thành phần cấu thành nên
một trình thu thập, các chiến lược thu thập dữ liệu, việc đánh giá của trình
thu thập dữ liệu đối với trang web. Qua đó chúng ta sẽ có một bức tranh
chung về trình thu thập web, và có thể hiểu hơn về các giá trị thực tiễn mà nó
mang lại trong đời sống của con người.
Chương 2: Xây dựng ứng dụng website tổng hợp thông tin Phần đầu
chương sẽ trình bày về các kiến thức nền tảng, ở phần tiếp theo là các đánh giá


phân tích và các giải pháp nhằm nâng cao hiệu suất của trình thu thập, phần cuối
chương là việc hiện thực hóa ứng dụng thông qua việc xây dựng chương trình
thu thập dữ liệu trên website.
Chương 1. TÌM HIỂU VỀ TRÌNH THU THẬP WEB
1.2. Giới thiệu về trình thu thập web
Trình thu thập web (Web crawler) là một chương trình khai thác cấu
trúc đồ thị của web di chuyển từ trang này qua trang khác. Thời kỳ đầu
nó có những tên khá tượng hình như bọ web, roboot, nhện và sâu,
nhưng ngày nay tên gọi phổ biến nhất là vẫn là trình thu thập web. Mặc dù
vậy cụm từ 'thu thập' không lột tả được hết tốc độ của những chương
trình này, vì chúng có tốc độ làm việc đáng kinh ngạc, có thể thu thập dữ
liệu lên đến hàng chục ngàn trang trong vòng một vài phút.
Từ thời kỳ đầu, một động lực quan trọng thúc đẩy quá trình phát
triển của việc thiết kế trình thu thập web là lấy được nội dung các trang
web và thêm chúng hoặc đường dẫn của chúng vào một kho lưu trữ
trang - một kiểu kho lưu trữ có thể dùng để phục vụ cho các ứng dụng cụ
thể trong công cụ tìm kiếm web (search engine).
Các trình thu thập thường bắt đầu bằng cách chọn một số các

đường dẫn (URL) ứng với các trang web sẽ ghé thăm đầu tiên, các trang
này được gọi là các trang hạt giống. Khi ghé thăm một trang hạt giống,
trình thu thập sẽ đọc nội dung trang web, lọc ra tất cả các siêu liên kết
(hyperlink) có trong trang web đó và đưa các URL tương ứng với chúng
vào một danh sách gọi là biên giới (frontier). Dựa vào danh sách này,
trình thu thập tiếp tục quá trình duyệt đệ quy để ghé thăm tất cả các URL
chưa được duyệt.
Quá trình này chỉ dừng lại khi trình thu thập đã thu thập đủ số trang
yêu cầu hoặc frontier là rỗng, tức là không còn URL để duyệt. Tuy mô tả
này có vẻ đơn giản nhưng đằng sau chúng là khá nhiều vấn đề hóc búa
liên quan đến kết nối mạng, bẫy nhện, tiêu chuẩn trích xuất URL, chuẩn
hóa các trang HTML, bóc tách nội dung trang HTML,... Ở phần sau của
khóa luận tôi sẽ lần lượt trình bày đến các vấn đề này và hướng giải
quyết của chúng.
Sau khi đã có được một danh sách các URL dùng cho việc thu thập,
ta sẽ thực hiện quá trình lấy trang. Tất cả các trang được lấy một lần và
được lưu vào một kho lưu trữ giống như cơ sở dữ liệu của công cụ tìm
kiếm, đến đây không cần thu thập thêm. Tuy nhiên web là một thực thể
năng động với các không gian con liên tục phát triển và thay đổi nhanh
một cách chóng mặt, vì thế thông tin phải liên tục được thu thập để giúp
các ứng dụng luôn cập nhật, ví dụ như bổ sung các trang mới loại bỏ
các trang đã bị xóa, di chuyển hoặc cập nhật các trang bị sửa đổi.
Các trang web chủ yếu được viết bằng các ngôn ngữ đánh dấu như
HTML, XHTML và được nhắm đến đối tượng sử dụng là con người chứ


không phải máy tính. Các trang web lại chứa đựng nhiều thông tin có ích
mà con người có thể muốn thu thập và lưu trữ lại, chính vì thế mà cần
phải có những kỹ thuật bóc tách và trích xuất thông tin theo một cơ chế
tự động. Các kỹ thuật bóc tách dữ liệu (parsing) có thể ở mức đơn giản

như việc bóc tách các siêu liên kết, hoặc ở mức phức tạp hơn một chút
là bóc tách bất kỳ phần nội dung nào trong một trang web. Về bản chất,
quá trình thu thập web chính là quá trình duyệt đệ quy một đồ thị.
Các web được xem như một đồ thị với các trang là các đỉnh (node) và
các siêu liên kết là các cạnh. Quá trình lấy trang và trích xuất các liên kết
bên trong nó tương tự như việc mở rộng tìm kiếm một đỉnh trong đồ thị.
Việc tìm kiếm này là khác nhau trong các trình thu thập sử dụng chiến
lược tìm kiếm khác nhau. Phần sau của khóa luận tôi sẽ trình bày sâu
hơn về các chiến lược tìm kiếm và đưa ra các số liệu thống kê để so
sánh hiệu suất của các chiến lược tìm kiếm này từ đó rút ra đánh giá về
hiệu suất của các trình thu thập.
Trình thu thập web là thành phần đầu tiên trong toàn bộ hệ thống
search engine. Mục đích chung của các hệ thống search engine là số
lượng trang web đầu vào đạt giá trị cao nhất có thể, trong đó trình thu thập
web làm công việc chính là duy trì cơ sở dữ liệu được đánh chỉ mục, trả về
giá trị của bộ thu thập và bộ lập chỉ mục cho hàng triệu truy vấn nhận
được từ người dùng. Các trang được đánh chỉ mục dựa trên các thuật
toán ưu tiên hoặc dựa vào các phương pháp dựa trên kinh nghiệm
(heuristic). Ngoài ra, chúng ta có thể sử dụng trình thu thập web để xây
dựng các phần mềm tập trung thông tin, các trang web tổng hợp thông
tin, dựa trên cơ chế tự động tìm và phát hiện tài nguyên.


1.2. Cách xây dựng một hạ tầng thu thập

Hình 1.2.1.1 Một vòng thu thập web cơ bản


Trình thu thập chứa một danh sách các URL chưa được thăm gọi là
biên giới (frontier). Danh sách được khởi tạo bởi một số các URL hạt

giống - các URL này được cung cấp bởi một người dùng hoặc một
chương trình khác. Mỗi vòng lặp là một quá trình gồm các bước :
- Lấy một URL tiếp theo từ frontier ra để thu thập.
- Lấy trang tương ứng với URL thông qua HTTP.
- Bóc tách trang vừa lấy để trích xuất ra các URL và các nội dung
thông tin cụ thể.
- Cuối cùng là thêm các URL chưa thăm vào frontier.
Trước khi các URL được thêm vào frontier chúng có thể được đánh
chỉ mục dựa trên số lượng truy cập vào trang web ứng với URL. Quá
trình thu thập sẽ chấm dứt ngay khi trình thu thập đạt đủ số lượng trang
nhất định hoặc frontier rỗng, đây được gọi là trạng thái kết thúc (deadend) của trình thu thập.
1.2.1. Frontier
Frontier là một danh sách chứa các URL của các trang chưa thăm.
Trong thuật ngữ tìm kiếm đồ thị, frontier là một danh sách mở các đỉnh
chưa được mở rộng. Đối với một trình thu thập lớn frontier có thể chứa
hàng chục ngàn đến hàng trăm ngàn trang và phải lưu trữ trong ổ cứng.
Tuy vậy frontier nào cũng có một miền giới hạn nhất định, miền giới hạn
này lớn hay nhỏ phụ thuộc vào bộ nhớ của máy tính. Khi số lượng URL
thu thập được vượt quá giới hạn này chúng ta sẽ cần một cơ chế để loại
bỏ các URL ứng với các trang ít quan trọng và giữ lại các URL ứng với
các trang quan trọng. Lưu ý rằng tốc độ thêm các URL vào frontier
nhanh gần bằng tốc độ thu thập thông tin. Nó có thể thêm tới 60000 URL
ngay khi trình thu thập thu thập dữ liệu của 10000 trang, giả định trung
bình mỗi trang có khoảng 7 liên kết.
Frontier có thể coi như một hàng đợi làm việc theo cơ chế FIFO (viết
tắt của First In First Out) nghĩa là vào trước ra trước trong trường hợp
chúng ta sử dụng thuật toán tìm kiếm theo chiều rộng để thu thập thông
tin. Trình thu thập sử dụng chiến thuật tìm kiếm này gọi là trình thu thập
theo chiều rộng. Các URL được lấy ra thu thập được chọn từ trên xuống
dưới trong danh sách và các URL mới được thêm vào đuôi của danh

sách. Do miền giới hạn của frontier, ta phải đảm bảo các URL chỉ được
lấy một lần. Để tìm kiếm xem một URL mới được trích xuất đã có trong
danh sách chưa là khá phức tạp vì số lượng trang là rất lớn mỗi lần tìm
kiếm là một lần chạy vòng for điều này là khá bất cập. Vì vậy có một giải
pháp là sử dụng một phần bộ nhớ để duy trì một hàm băm với URL là
khóa. Hàm băm này sẽ sinh ra các giá trị băm tương ứng với mỗi URL. Sở
dĩ sử dụng hàm băm sẽ tìm kiếm nhanh hơn vì việc so sánh các giá trị
băm nhanh hơn nhiều việc so sánh một giá trị với một khối dữ liệu lớn.


Hiện nay do bộ nhớ máy tính là rất lớn nên vấn đề về bộ nhớ là không
mấy quan trọng so với vấn đề về tốc độ. Do vậy, cách sử dụng hàm băm
được sử dụng rộng rãi vì tuy là tốn bộ nhớ hơn nhưng tốc độ tìm kiếm lại
được cải thiện đáng kể.


Khi frontier đạt đến miền giới hạn, thì các trình thu thập theo chiều
rộng sẽ làm việc theo cơ chế sau : sau khi đưa một URL ra khỏi frontier
để tiến hành quá trình thu thập trang tương ứng thay vì việc lấy tất cả
URL trong trang này trình thu thập sẽ chỉ lấy URL chưa thăm đầu tiên và
thêm vào frontier.
Frontier có thể coi như một hàng đợi ưu tiên trong trường hợp
chúng ta sử dụng thuật toán tìm kiếm theo lựa chọn tốt nhất. Trình thu
thập sử dụng chiến thuật tìm kiếm này gọi là trình thu thập ưu tiên. Hàng
đợi ưu tiên là một mảng với các phần tử là các URL được sắp xếp theo
điểm đánh giá. Điểm đánh giá này được xác định dựa trên một số các
phương pháp dựa trên kinh nghiệm (heuristic). Trình thu thập ưu tiên sẽ
làm việc theo cơ chế sau: URL được lấy ra khỏi frontier để tiến hành thu
thập luôn là URL tốt nhất. Sau khi thu thập trang tương ứng, các URL
được trích xuất ra được đưa vào frontier và các danh sách URL được sắp

xếp lại theo điểm đánh giá. Để tránh việc trùng lặp URL chúng ta cũng
duy trì một hàm băm với các khóa là URL để tra cứu.
Khi frontier đạt đến miền giới hạn, cơ chế làm việc của trình thu thập
tối ưu cũng giống với trình thu thập theo chiều rộng chỉ khác là các URL
được lấy là các URL tốt nhất (tức là URL có điểm đánh giá cao nhất).
Trong trường hợp trình thu thập nhận thấy frontier là danh sách rỗng
(không thể lấy ra các URL tiếp theo để thu thập) thì quá trình thu thập sẽ
kết thúc. Tuy vậy trường hợp rất hiếm xảy ra vì với một số URL hạt giống
và miền giới hạn khá lớn frontier hiếm khi đạt trạng thái rỗng.
Nhiều khi một trình thu thập có thể bắt gặp một bẫy nhện (spider trap,
) dẫn nó đến một lượng lớn các URL khác nhau nhưng trỏ đến cùng một
trang web. Một cách để giảm bớt vấn đề này là hạn chế số lượng trang
mà các trình thu thập truy cập từ một tên miền nhất định. Các mã liên kết
với frontier có thể đảm bảo rằng trong một chuỗi liên tiếp các URL (khoảng
100 URL) trong frontier sẽ chỉ chứa một URL từ một tên miền máy chủ (ví
dụ như www.cnn.com). Như vậy trình thu thập sẽ tốt hơn bởi không truy
cập vào cùng một trang quá thường xuyên và các trang được thu thập
cũng có xu hướng đa dạng hơn.
1.2.2. Lược sử và kho lưu trữ trang
Lược sử thu thập dữ liệu là một danh sách đánh dấu theo thời gian
các URL được lấy bởi trình thu thập. Một URL được đưa vào lược sử chỉ
sau khi đã trả về các URL bên trong nó. Lược sử có thể sử dụng để phân
tích và đánh giá thông tin. Lược sử được lưu trữ nhằm cung cấp cho một
tra cứu nhanh để kiểm tra xem một trang đã được thăm hay chưa. Kiểm
tra này là khá quan trọng nhằm tránh các trang bị thăm lại và tránh thêm
việc thu thập lại các trang này. Do kích thước của frontier có hạn và bộ
nhớ của máy tính hiện nay là vô cùng lớn nên việc duy trì một lược sử cần
thiết nhằm nâng cao hiệu quả hoạt động của trình thu thập. Một điều cần



chú ý là phải chuẩn hóa URL trước khi đưa vào lược sử.
Khi một trang được lấy nó phải được lưu trữ và lập chỉ mục nhằm
mục đích phục vụ cho các ứng dụng sau này (chẳng hạn như công cụ
tìm kiếm). Đây là công việc mà một kho lưu trữ trang phải làm. Một kho
lưu trữ trang ở dạng đơn giản sẽ chứa các trang thu thập theo từng file
riêng biệt. Trong trường hợp đó, mỗi trang phải đặt trong một tệp tin duy
nhất. Một cách để làm điều này là đặt mỗi trang URL tương ứng với một
chuỗi sau đó sử dụng một vài dạng của hàm băm với xác suất xung đột
thấp để mã hóa. Giá trị kết quả của hàm băm được sử dụng làm tên của
tập tin. Ví dụ ta có thể sử dụng hàm băm MD5 cung cấp một mã băm 128
bit cho mỗi URL. Giá trị băm 128 bit sau đó được chuyển đổi sang hệ thập
lục phân (hecxa) 32 ký tự để lấy ra tên file. Ví dụ nội dung của
được lưu trữ trong một tập tin tên là
160766577426e1d01fcb7735091ec584. Bằng cách này chúng ta có độ
dài tên tập tin luôn cố định cho dù có bao nhiều URL đi nữa. Tất nhiên
nếu chỉ cần lưu trữ vài nghìn trang thì ta có thể sử dụng một hàm băm
đơn giản hơn. Trong một số trường hợp các kho lưu trữ trang cũng có
thể dùng để kiểm tra xem một URL đã được thu thập hay chưa trước khi
chuyển đổi sang tên tập tin 32 ký tự. Trong những trường hợp này có thể
bỏ đi cấu trúc dữ liệu lược sử.
1.2.3. Cách lấy trang
Để lấy một trang web, chúng ta cần một máy khách HTTP (HTTP
client) gửi một yêu cầu HTTP (HTTP request) cho trang đó và đọc các
phản hồi . Client cần có thời gian trễ để đảm bảo rằng không bị mất thời
gian không cần thiết vào các máy chủ chậm hoặc đọc các trang lớn.
Trong thực tế chúng ta thường hạn chế vấn đề này bằng cách cho client
tải về khoảng 10-20 KB đầu tiên của trang. Client cần bóc tách được tiêu
đề phản hồi cho các mã trạng thái và chuyển hướng. Kiểm tra lỗi và xử lý
ngoài luồng là rất quan trọng trong quá trình lấy trang vì chúng ta phải đối
phó với hàng triệu máy chủ. Trong quá trình lấy trang, trình thu thập

không thể tự quyết định tài liệu nào được lập chỉ mục và tài liệu nào
không, do đó nó lấy tất cả những gì có thể. Thậm chí dù xác định được
tài liệu vô ích thì nó cũng đã bỏ ra một chi phí đáng kể cho hoạt động thu
thập. Tiêu chuẩn loại trừ robot (Robot Exclusion Protocol, ) ra đời.
1.2.3.1. Tiêu chuẩn loại trừ robot
Tiêu chuẩn này cung cấp cho người quản trị Web (Webmaster) một
cơ chế xác định các tập tin mà không cần truy cập bằng trình thu thập.
Để làm được điều này, trình thu thập (robot) duy trì một tập tin có tên là
robot.txt trong thư mục gốc của các máy chủ web (ví dụ như
. Tệp tin này chứa hoàn toàn nội dung
văn bản text (không phải HTML). Robot.txt cho phép Webmaster định ra
các thành phần với quyền hạn riêng biệt cho từng robot. Nói cách khác
thông qua tệp tin này, Webmaster sẽ giao tiếp với robot để điều khiển tác


vụ của các robot này. Nó gồm 2 trường là trường User-agent và trường
Disallow:
- Trường User-agent: cho biết robot nào sẽ bị kiểm soát.
- Trường Disallow: cho biết robot có được phép kết nối vào URL hay
không.
Sau đây là các ví dụ minh họa việc sử dụng file robot.txt :

Cú pháp
User-agent:*
Disallow:
User-agent:*
Disallow: /cgi-bin/
Disallow:
/tmp
Disallow: /private

User-agent:
SpamBot
Disallow: /

Ghi chú cho
Webmaster
Dấu (*) có nghĩa là áp dụng cho
mọi robot. Nhưng vì không có tài
nguyên nào bị cấm nên tất cả mọi
thư mục đều được cho phép.
Tất cả mọi robot đều có quyền truy
cập tất cả các thư mục trừ ba thư
mục được trích dẫn phía sau
Trường hợp này robot SpamBot bị
cấm truy cập tất cả thư mục. Dấu
gạch chéo "/" có nghĩa là tất cả các
thư mục. User-Agent có thể là ký tự
đơn và các robot không phần biệt
chữ hoa và chữ thường.

User-agent:
SpamBot
Disallow:/
User-agent:*
Disallow: /private

SpamBot bị cấm truy cập tất cả tài
nguyên. Trong khi các robot khác
được được truy cập tất cả trừ thư
mục "private".


User-agent:
SpamBot
Disallow: /tmp/
Disallow: /private/
Disallow:
/tailieu/canhan.html
User-agent: *
Disallow: /tmp/

Không cho phép SpamBot dò các
thư mục được liệt kê phía sau : thư
mục “tmp”, “private” và tệp tin
“canhan.html” trong thư mục
“tailieu”.
Các robot tìm kiếm khác được dò
mọi thứ trừ hai thư mục “tmp” và
“private”.


Disallow: /private/
- Nhược điểm của file robot.txt:
Người ta cho rằng việc liệt kê các trang hoặc các thư mục trong file
robot.txt sẽ là nguyên nhân thu hút sự chú ý và trở thành mục tiêu cho
các hacker. Thực ra chuẩn loại trừ robot chỉ là dấu hiệu cảnh báo, không
phải là biện pháp cấm robot cho nên việc tuân theo hay không hoàn toàn
là vấn đề tự nguyện. Tuy nhiên vẫn có cách khắc phục:
Tạo một thư mục chứa tất cả các file quan trọng.
- Trường Disallow chỉ liệt kê tên thư mục vừa tạo.
- Cấu hình server sao cho các trang không chứa đường dẫn đến thư

mục này.
Đáng buồn trên thực tế cách này không đạt được kết quả mong đợi
do một trong các nguyên nhân sau :
- Các server có robot không bị cấm có thể dẫn đường các robot bị cấm
khác
đến những file này.
- Các file quan trọng có thể nằm trong log file (file được tự do truy
xuất).
- Khi cấu hình lại server, admin có thể 'quên' các thư mục này phải
cấm robot!
1.2.4. Bóc tách trang
Khi một trang đã được lấy, chúng ta cần phân tích nội dung của nó
để trích xuất thông tin, lấy ra các URL để mở ra hướng đi tiếp theo của
các trình thu thập. Phân tích nội dung có thể là quá trình khai thác
hyperlink/URL đơn giản hoặc nó có thể bao gồm quá trình phức tạp hơn
như lọc nội dung HTML để phân tích thành mô hình thẻ HTML dạng cây
(HTML tag tree). Phân tích nội dung cũng có thể bao gồm các bước
chuyển đổi URL được trích xuất thành dạng tiêu chuẩn, loại bỏ những từ
ở phần đầu nội dung của trang và lấy các từ còn lại ở phần thân.
1.2.4.1. Tiêu chuẩn trích xuất URL
Hàm bóc tách HTML có sẵn cho nhiều ngôn ngữ khác nhau. Chúng
cung cấp các chức năng để dễ dàng xác định các tag HTML và cặp các
giá trị thuộc tính liên quan trong một tài liệu HTML. Để trích xuất siêu liên
kết URL từ một Trang Web, chúng ta có thể sử dụng các hàm bóc tách
để tìm thẻ anchor (thẻ <a>) và lấy các giá trị các thuộc tính href liên quan.
Trước tiên chúng ta phải chuyển đổi tất cả các đường dẫn URL sang
đường dẫn URL tuyệt đối vì có nhiều đường dẫn URL viết không đúng quy
chuẩn có thể cùng dẫn tới một trang. Điều này là quan trọng để tránh lấy
một trang nhiều lần. Đây là một số bước điển hình được sử dụng trong thủ



tục chuẩn hóa URL:
- Chuyển đổi giao thức và tên máy chủ thành dạng chữ thường.
Ví dụ, HTTP://www.COLTECH.vnu.edu.vn
.

chuyển

đổi

thành

- Loại bỏ phần 'tham khảo' trong URL.
Ví dụ, chuyển đổi thành
/>- Thực hiện mã hóa URL cho một vài những ký tự thường sử dụng
như '~'
Điều này sẽ tránh được việc thu thập lại 1 trang.
Ví dụ, và />%7Epant/ là 2 URL cùng dẫn đến một trang.
- Đối với một vài URL, thêm ký tự '/'. Ví dụ,
và cùng nối tới một dạng chuẩn. Quyết định
thêm '/' sẽ cần heuristic trong nhiều trường hợp.
- Sử dụng các heuristic để nhận ra các trang web mặc định. Những
tên file như index.html hoặc index.htm có thể được loại bỏ trong đường
dẫn URL với thừa nhận rằng đó là những trang mặc định.
- Loại bỏ '..' và đường dẫn trước nó trong phần URL.
Ví dụ, đường dẫn /%7Epant/BizIntel/Seeds/../ODPSeeds.dat được
chuyển /%7Epant/BizIntel/ODPSeeds.dat.
Điều quan trọng là đảm bảo tính nhất quán trong khi áp dụng các luật
chuẩn hóa. Có thể hai luật khác nhau lại cho kết quả tốt như nhau miễn
là ta áp dụng các luật chuẩn hóa URL một cách nhất quán. Trước đây có

một vấn đề hóc búa đặt ra cho các trình thu thập là bẫy nhện. Kỹ thuật phổ
biến của bẫy nhện là tạo ra các cấu trúc đường dẫn sau vô hạn.
Ví dụ, />Các URL giả tạo ra bởi bẫy nhện tăng lên cực nhanh. Có một cách để
ngăn chặn là giới hạn kích thước URL cỡ 128 hoặc 256 ký tự.
1.2.4.2. Mô hình thẻ HTML dạng cây
Các trình thu thập có thể lấy ra giá trị của các URL hoặc một nội
dung bất kỳ trong một trang web bằng cách kiểm tra phạm vi thẻ tag
HTML chứa chúng. Để làm được điều này, trình thu thập có thể sử dụng
mô hình thẻ HTML dạng cây và phân tích cấu trúc DOM (Document Oject
Model) của mô hình này. Phân tích cấu trúc DOM giúp trình thu thập 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.
Hình 2 cho ta thấy một mô hình cây tương ứng với một mã nguồn URL


Hình 1.2.1.1 Mô hình cây tương ứng với một mã nguồn HTML
Có thể thấy thẻ <html> là gốc của cây, các thẻ bên trong nó là các
node mở rộng, và dữ liệu text là lá của cây.
Trên thực tế, không phải văn bản HTML nào cũng được viết đúng quy
chuẩn như ví dụ trên. HTML là ngôn ngữ không phân biệt chữ hoa hay chữ
thường (hai thẻ <tr> và <TR> đề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ẻ
, <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:

Cộng hòa xã hội chủ nghĩa Việt Nam <i>
Độc lập tự do
hạnh phúc

</i>. Vì vậy trước khi lập mô hình cây cho một mã nguồn
HTML chúng ta cần một quá trình chuyển đổi các tài liệu HTML tồi thành
các tài liệu HTML tiêu chuẩn, quá trình này gọi là chuẩn hóa các trang
HTML. Quá trình này bao gồm việc chuyển đổi các thẻ sang dạng chữ

thường, chèn thêm các thẻ bị và sắp xếp lại thứ tự các thẻ trong tài liệu
HTML. Chuẩn hóa trang HTML là rất cần thiết để việc lập mô hình cây
được chính xác. Nếu như trình thu thập chỉ cần lấy các liên kết hoặc văn
bản hoặc một phần văn bản thì có thể ta không cần sử dụng tới mô hình
cây mà chỉ cần sử dụng kỹ thuật bóc tách HTML đơn giản. Trình bóc tách
như vậy cũng được hỗ trợ trong nhiều ngôn ngữ lập trinh.
1.2.5. Trình thu thập đa luồng
Mỗi vòng thu thập tuần tự chiếm một lượng lớn thời gian, trong khi
đó một trong hai cái là CPU hoặc mạng lại nhàn rỗi: CPU nhàn rỗi (trong
khi truy cập mạng) hoặc mạng nhàn rỗi (trong các hoạt động của CPU).


Việc xử lý đa luồng với mỗi luồng là một vòng thu thập, có thể giúp cho
việc tăng tốc độ hợp lý và sử dụng hiệu quả băng thông sẵn có.

Hình 1.2.1.1 Một mô hình trình thu thập đa luồng
Mô hình đa luồng là mô hình làm việc gồm nhiều luồng trên cùng một
frontier với mỗi luồng là một vòng thu thập. Chính vì thế cần một cơ chế
đồng bộ để tránh việc xung đột khi các luồng cùng tiến hành quá trình thu
thập trên một frontier. Cơ chế này như sau:
- Luồng đầu tiên bắt đầu bằng cách khóa frontier để chọn URL tiếp
theo cho quá trình thu thập dữ liệu.
- Sau khi lấy ra một URL, nó sẽ mở khóa frontier cho phép các
luồng tiếp theo truy cập vào frontier.
- Frontier lại bị khóa lại để những URL mới được thêm vào.
Các bước khóa này là cần thiết để đồng bộ hóa việc sử dụng
frontier khi mà frontier bị chia sẻ bởi nhiều vòng thu thập. Chú ý rằng một
trình thu thập thông thường sẽ duy trì một cấu trúc dữ liệu lược sử phục
vụ cho việc tra cứu nhanh các URL đã được thu thập. Do đó ngoài các
frontier thì việc đồng bộ hóa các truy cập vào lược sử là điều cần thiết.

Các mô hình trình thu thập đa luồng cũng cần phải đối phó với các
frontier rỗng giống như một trình thu thập theo tuần tự. Tuy nhiên đây là
vấn đề không đơn giản. Nếu một luồng phát hiện ra frontier rỗng, nó
không tự động hiểu là toàn bộ trình thu thập đã đến trạng thái kết thúc. Nó
có thể cho rằng các luồng khác đang lấy trang và có thể thêm các URL
mới trong tương lai gần. Một cách để giải quyết với tình trạng này là đặt
một luồng một trạng thái chờ khi frontier bị khóa. Khi hết thời gian chờ nó


sẽ kiểm tra lại frontier. Sẽ có một bộ kiểm tra chịu trách nhiệm theo dõi số
luồng đang ở trạng thái chờ tại thời điểm hiện tại. Chỉ khi tất cả các luồng
đều trong trạng thái chờ thì khi đó trình thu thập sẽ dừng lại.
1.3. Các chiến lược thu thập dữ liệu
Trong phần này chúng ta sẽ thảo luận về một số chiến lược thu thập
dữ liệu bao gồm:
- Chiến lược thu thập dữ liệu theo chiều sâu.
- Chiến lược thu thập dữ liệu theo chiều rộng.
- Chiến lược thu thập dữ liệu theo ngẫu nhiên.
- Chiến lược thu thập dữ liệu theo lựa chọn tốt nhất ngây thơ.
Như đã nói ở phần trước về bản chất, quá trình thu thập web chính
là quá trình duyệt đệ quy một đồ thị. Các web được xem như một đồ thị
với các trang là các đỉnh (node) và các siêu liên kết là các cạnh. Chính vì
thế các chiến thuật thu thập dữ liệu cũng được xây dựng dựa trên các
thuật toán tìm kiếm trên đồ thị. Các thuật toán tìm kiếm trên đồ thị bao
gồm:
- Tìm kiếm theo chiều sâu (Depth-First Search): Là thuật toán tìm kiếm
bằng cách mở rộng nút đồ thị theo chiều sâu.
- Tìm kiếm theo chiều rộng (Breath-First Search): Là thuật toán tìm
kiếm bằng cách mở rộng nút đồ thị theo chiều rộng.
- Tìm kiếm theo lựa chọn tốt nhất (Best-First Search): Là một thuật

toán tìm kiếm tối ưu bằng cách mở rộng nút hứa hẹn nhất theo một quy
tắc nào đó.
1.3.1. Chiến lược thu thập dữ liệu theo chiều sâu
Quá trình thực hiện:
Bước 1: Lấy URL đầu tiên trong danh sách (frontier) để thu thập.
- Nếu có qua bước 2.
- Nếu không qua bước 5.
Bước 2: Lấy trang tương ứng với URL qua HTTP.
- Nếu có qua bước 3.
- Nếu không quay lại bước 1.
Bước 3: Kiểm tra xem trang này đã được được thăm chưa?
- Nếu chưa qua bước 4.
- Nếu rồi quay lại bước 1.
Bước 4: Đánh dấu trang này đã được thăm. Bóc tách trang và tìm
các liên kết có trong trang này.


- Nếu có, thêm các liên kết vào đầu danh sách. Quay lại bước 3.
- Nếu không, quay lại bước 1.
Bước 5: Kết thúc.
1.3.2. Chiến lược thu thập dữ liệu theo chiều rộng
Quá trình thực hiện:
Bước 1: Lấy URL đầu tiên trong danh sách để thu thập.
- Nếu có qua bước 2.
- Nếu không qua bước 5.
Bước 2: Lấy trang tương ứng với URL qua HTTP.
- Nếu có qua bước 3.
- Nếu không quay lại bước 1.
Bước 3: Kiểm tra xem trang này đã được được thăm chưa?
- Nếu chưa qua bước 4.

- Nếu rồi quay lại bước 1.
Bước 4: Đánh dấu trang này đã được thăm. Bóc tách trang và tìm
các liên kết có trong trang này.
- Nếu có, thêm các liên kết vào cuối danh sách. Quay lại bước 3.
- Nếu không, quay lại bước 1.
Bước 5: Kết thúc.
1.3.3. Chiến lược thu thập dữ liệu theo ngẫu nhiên
Quá trình thực hiện:
Bước 1: Lấy URL ngẫu nhiên trong danh sách để thu thập.
- Nếu có qua bước 2.
- Nếu không qua bước 5.
Bước 2: Lấy trang tương ứng với URL qua HTTP.
- Nếu có qua bước 3.
- Nếu không quay lại bước 1.
Bước 3: Kiểm tra xem trang này đã được được thăm chưa?
- Nếu chưa qua bước 4.
- Nếu rồi quay lại bước 1.
Bước 4: Đánh dấu trang này đã được thăm. Bóc tách trang và tìm
các liên kết có trong trang này.
- Nếu có, thêm các liên kết vào cuối danh sách. Quay lại bước 3.


- Nếu không, quay lại bước 1.
Bước 5: Kết thúc.
1.3.4. Chiến lược thu thập dữ liệu theo lựa chọn tốt nhất ngây thơ
Chiến lược thu thập dữ liệu theo lựa chọn tốt nhất ngây thơ (Naive
Best-First, ) sử dụng thuật toán tìm kiếm theo lựa chọn tốt nhất theo quy
tắc tính điểm số cho các URL. Điểm số của một URL được tính bằng
phương pháp độ tương đồng cosin (cosine similarity, ) của trang web
tương ứng và truy vấn mà người dùng đưa ra. Độ tương đồng cosin là

phương pháp tính giá trị tương đồng giữa 2 vectơ n chiều bằng cách tìm
cosin góc giữa chúng, phương pháp độ tương đồng cosin thường được
dùng để so sánh một truy vấn với một trang văn bản.
Quá trình thu thập dữ liệu dùng trong trình thu thập tuần tự được
thực hiện như sau:
Bước 1: Sắp xếp các URL theo thứ tự giảm dần điểm số. Lấy ra
URL đầu tiên trong danh sách.
- Nếu có qua bước 2.
- Nếu không qua bước 5.
Bước 2: Lấy trang tương ứng với URL qua HTTP.
- Nếu có qua bước 3.
- Nếu không quay lại bước 1.
Bước 3: Kiểm tra xem trang này đã được được thăm chưa?
- Nếu chưa qua bước 4.
- Nếu rồi quay lại bước 1.
Bước 4: Đánh dấu trang này đã được thăm. Bóc tách trang và tìm
các liên kết có trong trang này.
- Nếu có, thêm các liên kết vào cuối danh sách. Quay lại bước 3.
- Nếu không, quay lại bước 1.
Bước 5: Kết thúc.
Ngoài ra chiến lược thu thập dữ liệu theo lựa chọn tốt nhất ngây thơ
cũng có thể dùng cho trình thu thập đa luồng nhưng độ ưu tiên được tính
theo N trong đó N là hàm của số lượng các luồng đang chạy đồng thời.
Các bước trong quá trình thu thập dữ liệu cũng giống như trên chỉ khác là
URL được sắp xếp theo giá trị N giảm dần.
Ngoài chiến lược thu thập dữ liệu theo lựa chọn tốt nhất ngây thơ
còn có nhiều cách thu thập dữ liệu khác sử dụng thuật toán theo lựa chọn
tốt nhất. Chúng khác nhau ở quy tắc tính điểm số cho URL. Có thể kể
đến một số trình thu thập như tìm kiếm tham ăn (Shark Search), nhện
thông tin (InfoSpiders) .



1.4. Đánh giá của trình thu thập
Theo một ý nghĩa chung, một trình thu thập có thể dựa vào các
đánh giá của mình để lấy các trang 'tốt'. Tuy nhiên, một trở ngại chính là
vấn đề trong việc công nhận những trang 'tốt' này. Trên thực tế người
dùng có thể đưa ra đánh giá sự thích hợp của các trang được thu thập
cho phép chúng ta xác định được việc thu thập dữ liệu có thành công hay
không. Thứ hai là, thu thập những trang web 'sống' sẽ tốn nhiều thời
gian. Do đó việc thu thập các trang web có thời gian sống ngắn sẽ lãng
phí thời gian cho người dùng.
Chúng ta có thể lựa chọn để tránh thời gian tải bằng cách chỉ trả về
cho người dùng kết quả tiêu đề và phần mô tả của tất cả các thu thập
nhưng điều này lại giới hạn mức độ thu thập thông tin.
Biện pháp để giải quyết vấn đề này là xây dựng các tiêu chí đánh
giá cho các trình thu thập. Đầu tiên là phải có những tiêu chí đánh giá
được độ quan trọng của một trang web. Khi đã xác định được những
trang web quan trọng và có giá trị, trình thu thập sẽ viếng thăm thường
xuyên hơn và sâu hơn. Thứ hai là phải có cơ chế phân tích tổng quát để
đánh giá các mức độ chính xác và hoàn chỉnh của các trang đã thu thập
với truy vấn của người dùng. Nhiều khi các trang mà trình thu thập cho là
quan trọng và có giá trị lại chưa chắc mang thông tin mà người dùng cần
tìm kiếm. Nguyên do của điều này là việc các trang web chuyên về tiếp thị
hay quảng cáo luôn luôn tìm cách lọt vào danh sách các trang tuyển chọn
của trình thu thập, và qua đó họ có thể giới thiệu sản phẩm của họ đến
người dùng. Ngược lại, trong đa số các trường hợp, người dùng không
muốn tìm các quảng cáo tiếp thị mà chỉ muốn tìm thông tin mà họ quan
tâm.
1.4.1. Độ quan trọng của trang web
Độ quan trọng của trang web có thể được đánh giá theo một số tiêu

chí chung như (,):
+ Từ khóa trong tài liệu: Một trang được xem là có liên quan nếu nó
chứa một phần hoặc tất cả từ khóa trong truy vấn
+ Tần số phát sinh: Được hiểu là tổng số lần xuất hiện của một chữ
hay một cụm từ của từ khoá trong nội dung một trang Web nào đó. Theo
sự đánh giá của các chuyên gia, thì tần số phát sinh của một trang Web
càng cao sẽ chứng tỏ nội dung của trang Web đó càng liên quan hay
càng đề cập nhiều đến những gì nêu trong từ khoá. Do đó, mật độ từ
khóa đóng vai trò quan trọng trong việc đánh giá độ quan trọng của một
trang Web.
+ Thẻ meta và câu lệnh title: Trong nhiều trình thu thập, người thiết
kế còn cho rằng sự xuất hiện các chi tiết hay toàn bộ nội dung của từ
khoá càng sớm trong một trang mã HTML thì điều đó chứng tỏ trang đó
có thể có chủ đề liên quan càng nhiều đến từ khoá. Hậu quả là một trang


Web có thể được đánh giá quan trọng hơn nếu các phần hay toàn bộ từ
khoá có mặt sớm hơn trong phần mã HTML. Như vậy, trong một số thẻ
meta, trình thu thập sẽ đọc nội dung và đánh giá độ quan trọng. Các thẻ
meta có nhiều hiệu lực cho việc đánh giá là:

<META name="keywords" content="(danh sách từ khoá)">
Với lý do tương tự, nếu câu lệnh <title>(tựa đề của trang Web)</title>
không bị bỏ trống thì độ quan trọng của nó có thể được nâng cao hơn.
+ Sự tương đồng với các trang hạt giống: Các trang tương ứng với
các URL hạt giống thường là đơn vị đo cho độ liên quan của các trang đã
thu thập. Các trang hạt giống được liên kết với lại thành một tài liệu duy
nhất. Độ quan trọng của một trang web được thu thập được đánh giá bằng
độ tương đồng cosin của nó và bộ tài liệu này

+ Tính phổ biến của liên kết: Một trình thu thập có thể sử dụng kết quả
xếp hạng các liên kết của các trang như alecxa, Google Page Rank để
đưa ra đánh giá về độ quan trọng của trang. Các trang web phân hạng có
thể xếp hạng liên kết dựa trên rất nhiều tiêu chí. Ví dụ như, alecxa là số
lượng truy cập còn google là nội dung, mã nguồn, tên miền vv...
+ Số lượng liên kết ngoài: Theo sự đánh giá của nhiều chuyên gia thì
nếu một trang Web được nhiều nơi khác đề cập tới hay mở liên kết tới địa
chỉ của nó thì rõ ràng giá trị của trang Web này cao hơn là các trang Web
cùng kiểu nhưng lại không có hay ít được liên kết hay đề cập từ các trang
khác. Như vậy, các trang Web nào được nhiều trang Web khác liên kết tới
(hay đề cập tới) thì chất lượng của nó có thể cao hơn và quan trọng hơn.
1.4.2. Phân tích tổng quát
Sau khi đã tính toán được độ quan trọng của trang người ta sẽ dựa
vào đó để phân tích xem thông tin trên những tài liệu thu thập được có
thực sự hoàn chỉnh (recall) và chính xác (precision) với truy vấn người
dùng yêu cầu không.
Độ chính xác (precision) và độ hoàn chỉnh (recall) trong thu thập
thông tin phụ thuộc vào kết quả của một truy vấn (hình oval) đối với các
tài liệu liên quan (nửa bên trái) và các tài liệu không liên quan (nửa bên
phải).
Độ chính xác được định nghĩa là tỉ lệ giữa số lượng các tài liệu liên
quan trong các tài liệu thu được (phần bên trái trong hình oval) trên tổng
số tài liệu thu được (hình oval). Độ chính xác ứng với mũi tên ngang.
Độ hoàn chỉnh được định nghĩa là tỉ lệ giữa số lượng các tài liệu liên
quan trong các tài liệu thu được (phần bên trái trong hình oval) trên tổng
số tài liệu liên quan hiện tại (phần bên trái). Độ hoàn chỉnh ứng với mũi tên
chéo.


Càng nhiều kết quả đúng (phần phần bên trái trong hình oval càng

lớn) thì kết quả càng chính xác và càng hoàn chỉnh.
1.4.2.1. Thước đo độ chính xác
Chúng ta sẽ thảo luận một số thước đo độ chính xác:
+ Tỉ lệ thu được: Trong trường hợp chúng ta có điểm số liên quan
chúng ta có thể đo được tỉ lệ rõ ràng của những trang tốt tìm thấy. Do đó,
nếu có 50 trang liên quan được tìm thấy trong 500 trang được thu thập
đầu tiên, chúng ta sẽ có tỉ lệ thu được hay tỉ lệ thu hoạch là 10% của 500
trang.
+ Độ liên quan trung bình: Nếu như điểm số liên quan là liên tục thì
chúng có thể được tính trung bình trên các trang đã thu thập. Đây là một
dạng tổng quát hơn tỉ lệ thu hoạch. Điểm số có thể được cung cấp thông
qua độ tương đồng cosin đơn giản hoặc bộ phân loại huấn luyện. Như vậy
độ trung bình có thể được tính qua sự tiến bộ của thu thập dữ liệu (100
trang đầu, 200 trang đầu...). Đôi khi độ trung bình được tính trên một cửa
sổ của một vài trang web (ví dụ 50 trang mới nhất từ một điểm thu thập
thông tin) .
1.4.2.2. Thước đo độ hoàn chỉnh
Do các thước đo độ hoàn chỉnh là rất khó tính toán cho nên tôi đã sử
dụng một số cách gián tiếp để ước lượng độ hoàn chỉnh. Một số cách có
thể kể đến như :
+ Thu hồi mục tiêu: Một tập hợp các URL liên quan được chia thành
2 bộ là hạt giống và mục tiêu. Trình thu thập bắt đầu từ các trang hạt giống
và thu hồi các trang mục tiêu.
+ Độ mạnh mẽ: Các URL hạt giống được chia thành hai bộ tách rời.
Mỗi bộ thường khởi tạo một trường hợp của cùng một trình thu thập. Sự
chồng chéo trong các trang thu thập bắt nguồn từ hai bộ này là không tránh
khỏi. Một lượng lớn sự chồng chéo được giải quyết bởi độ mạnh mẽ của
trình thu thập.
Độ mạnh mẽ là một số liệu dùng để đo hiệu suất của trình thu thập
trong một cách mà kết hợp cả độ chính xác và độ hoàn chỉnh. Ví dụ,

cách tìm kiếm độ dài của một số các trang được thu thập trước khi một
tỷ lệ nhất định của các trang liên quan được lấy.


Chương 2. DEMO CHƯƠNG TRÌNH WEB CRAWLER
Trong chương này chúng ta sẽ từng bước hiện thực hóa việc
demo chương trình tổng hợp thông tin. Phần đầu chương sẽ tìm hiểu về
các kiến thức nền tảng, ở phần tiếp theo việc hiện thực hóa chương
trình thu thập dữ liệu web crawler.
1.2. Các kiến thức nền tảng
2.2.1. Mạng toàn cầu
Mạng toàn cầu (world wide web, gọi tắt là web hoặc www) là một
không gian thông tin toàn cầu mà mọi người có thể truy nhập (đọc và
viết) qua các máy tính nối với mạng Internet. Thuật ngữ này thường
được hiểu nhầm là từ đồng nghĩa với chính thuật ngữ Internet. Nhưng
Web thực ra chỉ là một trong các dịch vụ chạy trên Internet, chẳng hạn
như dịch vụ thư điện tử. Web được phát minh và đưa vào sử dụng vào
khoảng năm 1990, 1991 bởi viện sĩ Viện Hàn lâm Anh Tim Berners-Lee
và Robert Cailliau (Bỉ) tại CERN, Geneva, Switzerland. Các tài liệu trên
world wide web được lưu trữ trong một hệ thống siêu văn bản
(hypertext), đặt tại các máy tính trong mạng Internet. Người dùng phải
sử dụng một chương trình được gọi là trình duyệt web (web browser) để
xem siêu văn bản. Chương trình này sẽ nhận thông tin tại ô địa chỉ do
người sử dụng yêu cầu (thông tin trong ô địa chỉ được gọi là tên miền
(domain name)), rồi sau đó chương trình sẽ tự động gửi thông tin đến
máy chủ (web server) và hiển thị trên màn hình máy tính của người xem.
Người dùng có thể theo các liên kết siêu văn bản trên mỗi trang web để
nối với các tài liệu khác hoặc gửi thông tin phản hồi theo máy chủ trong
một quá trình tương tác. Hoạt động truy tìm theo các siêu liên kết
thường được gọi là duyệt web. Quá trình này cho phép người dùng có

thể lướt các trang web để lấy thông tin. Tuy nhiên độ chính xác và chứng
thực của thông tin không được đảm bảo.


Hình 2.2.1.1 World wide web
World wide web World wide web có thể được phân loại thành ba
loại: các trang web tĩnh, các trang web động và các trang web tích cực.
- Trang web tĩnh: Một trang web tĩnh là một file HTML cụ thể nằm
trên web server.
- Trang web động : Một trang web động không tồn tại dưới dạng
một file cố định trên web server. Trang Web động chỉ được server tạo ra
khi nhận được một yêu cầu cụ thể từ trình duyệt web. Khi nhận được
một yêu cầu, Web server sẽ chạy một chương trình ứng dụng nào đó để
tạo ra nội dung một văn bản. Sau đó văn bản này được trả về cho trình
duyệt.
- Trang web tích cực : Một trang web tích cực là loại văn bản có
chứa chương trình. Chương trình này có khả năng tính toán và hiển thị
thông tin. Khi trình duyệt yêu cầu, server sẽ gửi cho trình duyệt một văn
bản có đính kèm chương trình. Trình duyệt sẽ chạy chương trình này tại
máy tính cục bộ của mình, chương trình có thể tương tác với người sử
dụng. Do vậy nội dung trang web tích cực không bất biến mà thay đổi khi
chương trình tương ứng thực thi. Có thể coi các trang web tích cực là
các trang web động về nội dung.
Sau đây là bảng so sánh các loại world wide web:
Loại web

Ưu điểm

Nhược điểm


Trang web tĩnh

Tính đơn giản, tiện
dụng và tin cậy. Sau khi
được tạo ra trang web
tĩnh có một định

Thiếu tính linh hoạt.
Khi phải thay đổi,
chúng ta phải chỉnh
sửa lại mỗi trang


Trang web động

Trang web tích
cực

dạng cố định và bất
biến. Trình duyệt có
thể nhanh chóng hiển
thị một trang web tĩnh,
và có thể tăng hiệu suất
hệ thống bằng cách sử
dụng cơ chế cache.

web tĩnh. Điều này
không được làm tự
động mà phải làm thủ
công. Do đó trang

web tĩnh không thích
hợp khi cần cung
cấp thông tin biến
đổi thường xuyên.

Khả năng hiển thị ngay
lập tức thông tin hiện
thời từ phía server.
Những thông tin thay
đổi
thường
xuyên,
chẳng hạn như dự báo
thời tiết, giá các loại
cổ phiếu,... có thể được
một chương trình ứng
dụng ở phía server sinh
ra và chuyển cho trình
duyệt khi có yêu cầu.

Chi phí cài đặt tương
đối cao và không linh
hoạt khi phải hiển thị
thông tin hay thay đổi.
Giống như web tĩnh,
một khi thông điệp
được server sinh ra và
chuyển
cho
trình

duyệt
thì nội dung
thông điệp là cố định.
Nếu mỗi lần thông tin
thay đổi thì trình duyệt
phải cập nhật lại để lấy
nội dung mới.

Ưu điểm chính của web
tích cực so với web
động chính là khả năng
cập nhật thông tin liên
tục do khả năng web
tích cực có khả năng
tương tác trực tiếp với
server để cập nhật
thông tin. Ví dụ một
trang web hiển thị giá
của thị trường chứng
khoán có thể tự động
cập nhật giá các loại
cổ phiếu mà không cần
bất kỳ sự can thiệp nào
từ phía người dùng.

Nhược điểm chính
của web tích cực là
chi phí xây dựng và
khả năng an ninh hệ
thống. Vì phải tải và

sau đó thực thi một
chương
trình
từ
server, nên phải có
khả năng đảm bảo
chương
trình
này
không làm gì có hại
trên
máy khách
(client).

2.2.2. Giao thức truyền tải siêu văn bản
Giao thức truyền tải siêu văn bản (Hyper Text Transfer Protocol
viết tắt là HTTP) là giao thức quan trọng nhất của web. Các tiến trình


máy khách (client) và máy chủ (server) trên các hệ thống đầu cuối khác
nhau giao tiếp với nhau thông qua việc trao đổi các thông điệp HTTP.

Hình 2.2.2.1 Tương tác client và server
Có 2 loại thông điệp HTTP là : Thông điệp yêu cầu (HTTP request)
và thông điệp trả lời (HTTP response)
2.2.3. Ngôn ngữ đánh dấu siêu văn bản
Ngôn ngữ đánh dấu siêu văn bản (Hyper Text Markup Language
viết tắt là HTML) là một ngôn ngữ đánh dấu được thiết kế ra để tạo nên
các trang web. HTML được xem như là một ứng dụng của SGML
(Standard Generalized Markup Language – một chuẩn ISO định nghĩa

các ngôn ngữ đánh dấu văn bản tổng quát). HTML được tổ chức World
Wide Web Consortium (W3C) duy trì và là ngôn ngữ đánh dấu cốt lõi của
World Wide Web. Phiên bản mới nhất của nó hiện là HTML 4.01. Tuy
nhiên HTML hiện không còn được phát triển tiếp mà người ta đã thay
thế nó bằng XHTML – một chuẩn HTML mở rộng dựa trên XML và có cú
pháp chặt chẽ hơn HTML. Mặc dù vậy nhưng phần lớn các trang web
hiện nay vẫn được viết bằng HTML. Có bốn loại phần tử đánh dấu trong
HTML.
- Đánh dấu có cấu trúc miêu tả mục đích của phần văn bản (ví dụ,

VietNam

sẽ điều khiển phần mềm đọc hiển thị “VietNam” là
tiêu đề cấp một).


- Đánh dấu trình bày miêu tả phần hiện hình trực quan của phần
văn bản bất kể chức năng của nó là gì (ví dụ <b>in đậm</b> sẽ hiển thị
thành in đậm).
- Đánh dấu liên kết ngoài chứa phần liên kết từ trang này đến trang
kia. Ví dụ như

tử không cần thẻ đóng, ví dụ các thẻ
, <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).

TÀI LIỆU THAM KHẢO
[1]. Gautam Pant, Padmini Srinivasan, Filippo Menczer. Crawling
the Web. Web Dynamics 2004, pp 153-178.
[2]. Sriram Raghavan, Hector Garcia-Molina. Crawling the Hidden
Web. Computer Science Department, Stanford University, USA 2001.
[3]. Soumen Chakrabarti. Mining the Web: Discovering knowledge
from hypertext data. Elsevier Science, Morgan Kaufmann Publishers
2003.
[4]. Hồ Đắc Phương. Mạng máy tính. NXB Đại học Quốc gia Hà
Nội 2007.
[5]. Đinh mạnh Tường. Cấu trúc dữ liệu và thuật toán. Nhà xuất
bản khoa học và kỹ thuật 2000.
[6]. Wikipedia, .
[7]. World Wide Web Consortium (W3C), .


[8]. Bách khoa toàn thư tiếng Việt, .
[9]. Biểu thức
topic=204.0.

chính

quy,

/>


×