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

Thu thập dữ liệu tự động web crawler

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 (1.69 MB, 53 trang )

BAN CƠ YẾU CHÍNH PHỦ
HỌC VIỆN KỸ THUẬT MẬT MÃ
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

ĐỒ ÁN TỐT NGHIỆP

NGHIÊN CỨU KỸ THUẬT THU THẬP DỮ LIỆU TỰ
ĐỘNG (CRAWLER) VÀ XÂY DỰNG ỨNG DỤNG THU
THẬP DỮ LIỆU VIỆC LÀM

Ngành: Công nghệ thông tin
Chuyên ngành: An toàn thông tin
Mã số: 52.48.02.01

Hà Nội, 2016


BAN CƠ YẾU CHÍNH PHỦ
HỌC VIỆN KỸ THUẬT MẬT MÃ
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

ĐỒ ÁN TỐT NGHIỆP

NGHIÊN CỨU KỸ THUẬT THU THẬP DỮ LIỆU TỰ
ĐỘNG (CRAWLER) VÀ XÂY DỰNG ỨNG DỤNG THU
THẬP DỮ LIỆU VIỆC LÀM
Ngành: Công nghệ thông tin
Chuyên ngành: An toàn thông tin
Mã số: 52.48.02.01

Sinh viên thực hiện:


Nguyễn Hữu Quyền
Lớp: AT8C
Người hướng dẫn:
ThS. Lê Bá Cường
Học viện Kỹ thuật mật mã

Hà Nội, 2016


MỤC LỤC

3


DANH MỤC KÍ HIỆU VÀ VIẾT TẮT

Ajax

Asynchronous JavaScript and XML

cURL

Encoding Method for Encryption

DOM

Document Object Model

HTML


HyperText Markup Language

HTTP

Hypertext Transfer Protocol

PHP

Hypertext Preprocessor

URL

Uniform Resource Locator

XML

Extensible Markup Language

4


DANH MỤC HÌNH VẼ

5


LỜI NÓI ĐẦU

Với sự phát triển mạnh mẽ của Internet trong những năm gần đây, đặc biệt là
sự bùng nổ của World Wide Web, con người càng ngày càng phát sinh những nhu

cầu về tìm kiếm và sử dụng thông tin. Những người dùng bình thường có thể tìm
kiếm thông tin trên Web một cách dễ dàng nhờ vào các máy tìm kiếm (search
engine), họ có thể đánh dấu (bookmark) các trang kết quả hoặc sao chép nội dung
họ muốn vào một nguồn nào đó để tham khảo về sau. Tuy nhiên nếu lượng thông
tin mà họ cần tổng hợp lại quá nhiều thì quá trình duyệt Web, trích xuất và lưu trữ
theo cách thủ công lại trở thành một công việc đầy khó khăn và hao tốn nhiều sức
lực, thời gian của con người.
Một số ví dụ có thể kể ra như: nhu cầu trích xuất thông tin về tất cả các mặt
hàng thuộc một chuyên mục của một Website bán hàng nào đó nhằm phục vụ mục
đích khảo sát thị trường, nhu cầu tổng hợp tin tức từ các Website tin tức để xây
dựng các trang Web thông tin tổng hợp, nhu cầu thu thập thông tin về các doanh
nghiệp thuộc một ngành nào đó trên Website danh bạ doanh nghiệp để gửi email
quảng cáo, tiếp thị, hoặc nhu cầu tìm việc của sinh viên mới và sắp ra trường là rất
cao. Chính những ví dụ thực tế như trên đã nảy sinh ra nhu cầu: cần phải có một
phương thức hoặc công cụ nào đó có khả năng tìm kiếm, trích xuất thông tin trên
Web và lưu trữ lại thông tin đó theo ý muốn của con người, một cách tự động và
hiệu quả, và đó cũng chính là mục tiêu của đồ án.
Đồ án được thực hiện nhằm mục đích tìm hiểu về thu thập dữ liệu tự động
và các phương pháp xây dựng ứng dụng thu thập dữ liệu việc làm tự động.
Mục tiêu đặt ra khi thực hiện đồ án là:
1. Tìm hiểu các kiến thức tổng quan về thu thập dữ liệu tự động.
2. Hiểu rõ được các kỹ thuật, chiến lược sử dụng trong việc thu thập dữ liệu
tự động, cách đánh giá một trình thu thập dữ liệu.
3. Xây dựng ứng dụng thu thập dữ liệu việc làm tự động cho phép thu thập
dữ liệu về việc làm và tra cứu thông tin việc làm đã thu thập được.
Sau khoảng thời gian thực hiện đồ án, các mục tiêu về cơ bản đã đạt được.
Tuy nhiên chắc chắn không tránh khỏi thiếu sót. Rất mong được sự góp ý của các
thầy cô, cũng như các bạn học viên để đồ án này được hoàn thiện hơn.

6



CHƯƠNG 1. TỔNG QUAN VỀ THU THẬP DỮ LIỆU TỰ ĐỘNG
Khi nhắc đến khái niệm thu thập dữ liệu thì mọi người đều hiểu đó là lấy về
những thông tin mình mong muốn từ các nguồn thông tin khác nhau như sách báo,
từ người khác, từ Internet và cụ thể hơn là các trang thông tin điện tử. Có thể nói
lượng thông tin mà mạng Internet mang lại là rất lớn và xu hướng hiện nay mọi
người thường theo dõi các thông tin trên mạng Internet là chính. Xu hướng đó phát
triển kéo theo sự gia tăng nhanh chóng của các trang thông tin điện tử và khi đó,
mọi người sẽ có nhu cầu là muốn thu thập thông tin trên các trang này một cách
nhanh chóng, tự động để phục vụ cho một mục đích nào đó. Chương đầu tiên của
đồ án sẽ giới thiệu những kiến thức tổng quan về thu thập dữ liệu tự động.
1.1. Các khái niệm về thu thập dữ liệu tự động
1.1.1. Trình thu thập Web tự động – Web Crawler
Đúng như tên gọi của nó – thu thập dữ liệu tự động, hay còn gọi là Web
Crawler. Có thể hiểu nôm na một Web Crawler 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, tự động thu thập cho ta các thông tin mong muốn[3].
Web Crawler mô tả lại hoạt động thu thập thông tin của con người qua các
trang Web thông tin điện tử. Ví dụ chúng ta khi muốn thu thập một thông tin nào
đó trên trang Web thì các bước cần làm là: duyệt Web từ trang này sang trang
khác, tìm kiếm thông tin mình quan tâm, ghi lại hoặc dùng một cách nào đó để lưu
trữ. Web Crawler cũng tương tự như vậy, tuy nhiên việc thu thập diễn ra nhanh
hơn, lượng thông tin thu thập được cũng nhiều hơn và quan trọng nhất. Và quan
trọng nhất, khi sử dụng Web Crawler, con người tiết kiệm được khoảng thời gian
phải tìm kiếm và thu thập thông tin thủ công.
Vì là một chương trình nên quá trình “duyệt web” của các Web Crawler
không hoàn toàn giống với quá trình duyệt web của con người (Web Crawler phải
sử dụng các phương thức dựa trên HTTP trực tiếp chứ không thông qua các trình
duyệt như con người). Một Web Crawler cơ bản sẽ bao gồm: Seeds, Frontier, một

bộ phận duyệt Web và tải về nội dung trang Web và một cơ sở dữ liệu để lưu trữ
những thông tin đã thu thập được.
1.1.2. Hạt giống – Seeds và Giới hạn thu thập – Frontier
Một Web Crawler bắt đầu với một danh sách các URL để duyệt, các URL
này được gọi là hạt giống. Khi Crawler duyệt các URL này, nó sẽ xác định tất cả
7


các liên kết (URL) có trong trang Web và thêm chúng vào một danh sách để duyệt,
có thể hiểu danh sách này là một giới hạn thu thập, Crawler sẽ chỉ duyệt các URL
có trong danh sách này.
Ví dụ cụ thể, từ hạt giống của trang Web tìm việc làm ‘vietnamworks’ là
một URL như sau ‘ Web Crawler sẽ tìm kiếm tất
cả các liên kết(URL) có trong trang Web đó và thêm vào danh sách ví dụ như trong
trang đó có liên kết tới các lĩnh vực việc làm như sau:
• />• />• />Danh sách Frontier hiện tại sẽ gồm 4 liên kết trên. Sau đó Web Crawler lại tiếp tục
duyệt 3 trang theo 3 liên kết trên và lại thêm vào danh sách các liên kết có trong
các trang đó như sau:
• />• />• />• />• />• />Lúc này Frontier đã có đến 10 liên kết, và quá trình thu thập các liên kết này sẽ lặp
đi lặp lại cho đến khi thỏa mãn một điều kiện nhất định nào đó do người dùng đặt
ra chẳng hạn như khi nào Frontier chứa 100 liên kết thì dừng lại.
1.1.3. Sơ đồ hoạt động của Web Crawler
Hình 1.1 cho ta thấy sơ đồ hoạt động của một Web Crawler cơ bản. Từ danh
sách các Seed, Crawler tiến hành duyệt và thu thập các liên kết cho vào Frontier,
và từ Frontier sẽ tiến hành duyệt, xử lý, mục đích cuối cùng là thu thập, lưu trữ các
thông tin mong muốn phục vụ cho việc nghiên cứu, đánh giá, tìm kiếm thông tin.
Với sự xuất hiện của Crawler, các thao tác đó được thực hiện một cách tự
động, tốc độ của Crawler nhanh hơn rất nhiều so với cách thủ công tuy nhiên để
thông tin thu thập được từ Crawler chính xác như thông tin thu thập được theo
cách thủ công thì việc cấu hình, thuật toán, kỹ thuật bóc tách dữ liệu phải được đầu

tư nhiều.

8


Hình 1.1. Sơ đồ hoạt động của một Web Crawler đơn giản
1.1.4. Xử lý dữ liệu đúng cách sau khi thu thập
Sau quá trình thu thập dữ liệu từ Web Crawler, việc xử lý dữ liệu như thế
nào cũng đặc biệt quan trọng. Ví dụ như khi ta duyệt một trang Web, như sơ đồ ở
hình 1.1 phía trên, ta sẽ thu thập được nội dung trang Web đó, nhưng trên thực tế,
thông tin chúng ta mong muốn nhiều khi chỉ là một phần nhỏ của cả trang Web đó.
Lấy ví dụ cụ thể, khi thu thập dữ liệu việc làm, khi duyệt đến trang chủ, ta chỉ cần
lấy thông tin về các danh mục (category) bao gồm tên và liên kết của chúng. Ví dụ
như mục ‘Xây dựng’ có liên kết là ‘ mục
‘Marketing’ có liên kết là ‘ Những thông tin
này chỉ chiếm một phần nhỏ của trang Web, phần còn lại có thể gồm các thông tin
quảng cáo, các hình minh họa, các bài viết liên quan đến việc làm nhưng lại không
nằm trong mục đích thu thập của chúng ta.
Một ví dụ khác về việc xử lý dữ liệu sau khi thu thập là trong lĩnh vực quảng
cáo, ví dụ như quảng cáo của Facebook, họ cần dữ liệu về người dùng như tên,
tuổi, nơi sống, sở thích… Họ thu thập và lưu trữ những thông tin đó phục vụ cho
việc quảng cáo, ví dụ như những quảng cáo về game sẽ hướng đến giới trẻ, những
người có sở thích về game, hay quảng cáo đồ dùng gia đình sẽ hướng đến những
bà mẹ nội trợ. Thông tin rất có giá trị khi được sử dụng đúng cách.
1.2. Kiến thức cần biết về Web và công cụ hỗ trợ quá trình thu thập dữ liệu
Để có thể sử dụng được ứng dụng thu thập dữ liệu, ta cần nắm được các kiến
thức cơ bản về ngôn ngữ HTML và một số công cụ đơn giản.
1.2.1. Khái niệm HTML
HTML là chữ viết tắt của HyperText Markup Language, có nghĩa là ngôn
ngữ đánh dấu siêu văn bản. Nó dùng để định dạng bố cục, các thuộc tính liên quan

đến cách hiển thị của một đoạn text và được hiển thị trên các trình duyệt. Hiện nay
9


có khá nhiều trình duyệt như Firefox, Chrome, Cốc Cốc, ... HTML ra đời với mục
đích thiết kế bố cục nội dung cho dữ liệu nói chung và cho giao diện trang Web nói
riêng.
HTML có thẻ mở và thẻ đóng với cú pháp: <tagname></tagname>. Ngoài ra
mỗi thẻ HTML còn có một số thuộc tính riêng và danh sách các thuộc tính sẽ nằm
bên trong thẻ mở: <tagname pro1="value1" prop2="value2"></tagname>
Ta có thể hình dung bố cục HTML của một trang Web như sau:
<!DOCTYPE html>
<html>
<head>
<title>Tiêu đề</title>
</head>
<body>

Chủ đề


Nội dung


</body>
</html>

Trong đó:
• <!DOCTYPE html> là phần khai báo kiểu dữ liệu hiển thị là html để trình
duyệt biết.
• <html></html> là cặp thẻ nằm ngoài cùng và nó có nhiệm vụ bao hết nội
dung trang Web lại. Thẻ này là bắt buộc.
• <head></head> là phần khai báo thông tin của trang Web.
• <title></title> là phần khai báo tiêu đề trang Web.
• <body></body> là thành phần quan trọng nhất, nó chứa những đoạn mã

HTML dùng để hiển thị trên trang Web.
• Các thẻ còn lại nằm trong thẻ <body> là các thẻ định dạng dữ liệu.
Chúng ta sẽ đặc biệt quan tâm đến các nội dung của trang Web có trong thẻ
<body></body> và các thẻ định dạng dữ liệu nằm trong đó khi triển khai ứng dụng
thu thập dữ liệu việc làm.
1.2.2. Công cụ Inspect Element trên trình duyệt
Inspect Element là một công cụ hỗ trợ tuyệt vời trên trình duyệt giúp ta xác
định các thẻ HTML định dạng dữ liệu một cách nhanh chóng.

10


Hình 1.2: Công cụ Inspect Element trên trình duyệt
Tại trình duyệt ấn F12 hoặc nhấn chuột phải chọn Inspect Element, một
khung sẽ hiện ra, tại khung này chứa các thông tin về trang Web dành cho các nhà
phát triển như Elements, Console, Sources, Network, Timeline … tuy nhiên trong
ứng dụng thu thập dữ liệu việc làm lần này ta chỉ quan tâm đến hai mục đó là
Elements và Network.
Elements chính là nơi chứa thông tin về HTML – những phần tử được hiển
thị trên trang Web, như trên hình, ta có thể thấy được thẻ định dạng dữ liệu của
tiêu đề bài viết tuyển dụng.
href=" />class="job-title text-clip text-lg" target="_blank">Production Manager</a>

Như vậy ta biết được vị trí tuyển dụng là ‘Production Manager’, thẻ định
dạng dữ liệu của nó là thẻ <a> với class là ‘job-title’, siêu liên kết dẫn đến bài viết
là ‘ Đây là
những thông tin cần thiết giúp ta khai phá dữ liệu một cách chính xác sau khi thu
thập.
Phần Network của công cụ Inspect Elements giúp ta đánh giá được tốc độ tải

trang của trang Web hiện tại, dựa vào đó ta có thể có các biện pháp, thuật toán giúp
tăng tốc độ thu thập Web. Ngoài ra khi sử dụng ứng dụng thu thập thông tin việc
làm, nó cũng giúp ta tính được tổng thời gian thực thi của ứng dụng.

11


Hình 1.3: Tab Network của công cụ Inspect Element
Như ta có thể thấy trên hình, trang Web tìm việc thực hiện việc tải trang hoàn tất
trong 18.80s. Ứng với mỗi trình duyệt có thể sử dụng công cụ Inspect Element có
sẵn hoặc sử dụng các tiện ích phát triển bởi bên thứ 3, ví dụ như công cụ Fire Bug
trên trình duyệt Mozilla Firefox.
1.3. Cấu trúc trang thông tin điện tử
Để có thể xây dựng được một ứng dụng thu thập thông tin thì ta cần nắm
được cấu trúc các phần tử của một bài viết trên trang thông tin điện tử, từ đó phân
tích ra đưa ra biện pháp thu thập thông tin sao cho hiệu quả nhất.
1.3.1. Sơ đồ cấu trúc trang thông tin điện tử
Một trang thông tin điện tử thông thường sẽ có cấu trúc như sau:

Hình 1.4: Sơ đồ cấu trúc trang thông tin điện tử

12


Nút trên cùng là trang chủ, đây thường sẽ là trang đầu tiên hiển thị khi
Website được truy cập theo URL gốc. Trang chủ là nơi liệt kê các liên kết đến các
trang khác của Website, ở đây thường trình bày các thông tin mới nhất mà Website
có, giới thiệu về Website, giới thiệu các đối tác, dịch vụ hay địa chỉ liên lạc của
đơn vị quản lý Website đó. Trang chủ thường được đầu tư khá kĩ lưỡng về mặt
giao diện để tạo cho người truy cập có ấn tượng ban đầu rằng đây là một Website

tốt, chuyên nghiệp và có vẻ sẽ mang lại những thông tin có giá trị.
Các nút ở hàng tiếp theo là các trang mà trang chủ có chứa các liên kết tới
chúng. Thông thường các trang này sẽ bao gồm trang liên hệ, trang giới thiệu,
trang hướng dẫn và trang danh mục.
• Trang liên hệ bao gồm các hình thức liên hệ với đơn vị quản lý thông qua
địa chỉ email, số điện thoại, trực tiếp tại văn phòng, trụ sở hay qua các hệ thống trả
lời trực tuyến, trang này thường có các form liên hệ để người xem gửi yêu cầu
ngay trên Website.
• Trang giới thiệu cung cấp cho người xem những thông tin liên quan đến
đơn vị quản lý Website, đưa ra các thế mạnh của Website so với các trang thông
tin khác.
• Trang hướng dẫn sẽ cung cấp thông tin cho người xem trong trường hợp họ
muốn sử dụng một chức năng nào đó trên Website. Thông tin trong trang này
thường hướng dẫn họ làm gì, làm như thế nào. Trang này khá quan trọng và giúp
tiết kiệm thời gian trả lời các câu hỏi trùng lặp mà đa số người xem thường thắc
mắc.
• Trang danh mục sẽ chứa các nội dung chính của Website và đó cũng là nội
dung mà người truy cập Website muốn xem. Trang này có thể là các lĩnh vực mà
tùy vào trang Web chúng có thể khác nhau. Ví dụ như trang tìm kiếm việc làm sẽ
có các danh mục là các lĩnh vực tuyển dụng như xây dựng, công nghệ thông tin,
dịch vụ… hoặc trang tin tức tổng hợp sẽ có các danh mục về xã hội, kinh tế, văn
hóa, giáo dục. Trang này sẽ liệt kê danh sách các sản phẩm/tin tức thuộc lĩnh vực
tương ứng nhưng sẽ không đi vào chi tiết từng sản phẩm/tin tức mà chỉ dừng ở
mức tóm tắt hoặc chỉ hiện tiêu đề.
Các nút ở hàng dưới cùng là các thông tin cụ thể nằm trong mỗi lĩnh vực
chẳng hạn như đối với trang thông tin việc làm thì các nút này sẽ là các việc làm,
ví dụ như ‘Tuyển nhân viên tiếp thị’, ‘Tuyển kĩ sư xây dựng’… Trong mỗi việc
làm sẽ chứa các thông tin chi tiết như vị trí tuyển dụng, giới thiệu về công ty, mức
lương…
13



1.3.2. Giao diện của trang thông tin điện tử
Hiện nay có thể nói giao diện là một yếu tố rất quan trọng đối với mỗi trang
Web và cụ thể là một trang thông tin điện tử. Người xem sẽ ưa thích những trang
có giao diện đẹp, đơn giản, dễ sử dụng, tốc độ tải trang nhanh hơn là những trang
Web ít đầu tư vào giao diện, khó sử dụng và tốc độ chậm. Giao diện thường thấy
của một trang thông tin điện tử bao gồm 3 phần chính là phần đầu trang (header),
phần cuối trang (footer) và phần nội dung (content). Ngoài ra đa số các Website
hiện nay thường có thêm các phần phụ là các thông tin quảng cáo.
• Phần đầu trang thường có các thông tin về tên Website, logo, các liên kết
tới các trang đăng ký, đăng nhập. Ngoài ra tại đây thường có danh sách các danh
mục chính(menu) và công cụ tìm kiếm. Tùy vào tính đặc thù của mỗi Website mà
phần đầu trang còn có thêm các phần đặc biệt ví dụ như thanh ngôn ngữ cho các
Website hỗ trợ nhiều ngôn ngữ chẳng hạn. Phần đầu trang thường không thay đổi
nội dung xuyên suốt cả Website.

Hình 1.5: 2 mẫu Header của trang thông tin việc làm
• Tương tự như phần đầu trang, phần cuối trang cũng thường không thay đổi
nội dung trên cả Website. Phần cuối trang thường chứa các liên kết đến các trang
thuộc Website, các liên kết đến các trang mạng xã hội, chứng nhận của các cơ quan
có thẩm quyền, địa chỉ liên lạc của đơn vị quản lý Website, bản quyền Website…

14


Hình 1.6: 2 mẫu Footer của trang thông tin việc làm
• Phần nội dung là phần quan trọng nhất của Website. Khác với 2 phần còn
lại, nội dung của phần này sẽ thay đổi theo các trang. Ví dụ như phần nội dung của
trang chủ sẽ chứa các thông tin mới nhất của mỗi mục, hay chứa một banner ảnh

lớn, chứa các sự kiện đang diễn ra trên Website, còn phần nội dung của trang liên
lạc sẽ chứa form liên lạc, chứa địa chỉ, số điện thoại; trang sản phẩm sẽ chứa thông
tin về mẫu mã, nơi sản xuất, hình ảnh về sản phẩm…
Dưới đây là cấu trúc mà ứng dụng thu thập dữ liệu việc làm sẽ dựa vào để
thu thập thông tin. Website thu thập sẽ là ‘ />
Hình 1.7: Website ‘ />Có thể thấy trên hình gồm 2 phần là phần tiêu đề (header) – số 1 và phần nội
dung (content) – số 2. Việc thu thập dữ liệu tự động sẽ chỉ tập trung vào phần nội
15


dung vì đó là phần chứa các thông tin có giá trị mà ứng dụng muốn thu thập. Phần
content sẽ thay đổi còn phần header hầu như luôn được giữ nguyên. Như hình trên
thì đây là trang có chứa các lĩnh vực tuyển dụng. Ứng dụng sẽ thu thập được các
thông tin về tên lĩnh vực và các liên kết dẫn tới danh sách các việc làm thuộc lĩnh
vực đó tại đây.
Tiếp đến là trang có chứa danh sách việc làm của mỗi lĩnh vực, tại đây phần
nội dung của trang Web sẽ chứa các thông tin về việc làm, công ty tuyển dụng,
mức lương, ngày đăng tuyển…

Hình 1.8: Danh sách việc làm trên Website ‘ />Cuối cùng là trang có chứa nội dung của mỗi thông tin tuyển dụng, đây là
trang liệt kê chi tiết thông tin về vị trí tuyển dụng, các yêu cầu, đãi ngộ, giới thiệu
về công ty…

Hình 1.9: Chi tiết việc làm trên Website ‘ />16


Như vậy, chúng ta chỉ cần quan tâm đến thông tin có trong 3 trang như trên,
ngoài ra, nếu trang Web muốn bạn đăng nhập mới hiện đầy đủ thông tin, thì ta cần
quan tâm đến một trang nữa đó là trang đăng nhập, ví dụ ở trang Web
‘ thì ta cần đăng nhập để xem được mức lương của

mỗi thông tin tuyển dụng. Quá trình đăng nhập, lấy thông tin như thế nào sẽ được
đề cập ở các phần sau.

17


CHƯƠNG 2. CÁC PHƯƠNG PHÁP TRONG VIỆC THU THẬP DỮ LIỆU
TỰ ĐỘNG
Chương 2 sẽ đi sâu vào tìm hiểu về các phương pháp sử dụng trong việc thu
thập dữ liệu tự động. Trong đó bao gồm mô hình hệ thống, các tính năng, chính
sách, kỹ thuật thu thập, thuật toán sử dụng và các yếu tố đánh giá xem việc thu
thập dữ liệu có hiệu quả hay không.
2.1. Mô hình hệ thống thu thập dữ liệu

Hình 2.1: Mô hình hệ thống thu thập dữ liệu
Đây là quá trình thu thập các liên kết từ các liên kết hạt giống (Seed)[3]. Quá
trình này được lặp đi lặp lại cho đến khi đạt đến một điều kiện xác định nào đó thì
dừng lại. Điều kiện có thể là độ lớn của Frontier (giới hạn), độ sâu của Frontier
hoặc có thể là thời gian thực thi… Sau quá trình này ta sẽ thu được các dữ liệu thô,
các dữ liệu này cần được qua xử lý để đạt được kết quả cuối cùng là các thông tin
có giá trị, đúng với ý người sử dụng mong muốn.
Các bước trong ứng dụng thu thập thông tin việc làm sẽ bao gồm: thu thập
Frontier, từ Frontier thu thập các dữ liệu việc làm thô, từ các dữ liệu thô này ta sẽ
18


chọn lọc để có được các dữ liệu giá trị, sau đó lưu vào cơ sở dữ liệu để phục vụ
cho người sử dụng truy xuất.
2.2. Các tính năng của một trình thu thập dữ liệu
Về cơ bản một trình thu thập (Crawler) phải có các tính năng sau khi thu

thập các trang Web:
• Tính tươi mới (Freshness): nghĩa là những bản tải về của trang Web phải là
bản gần nhất(up-to-date). Nó được coi như một mức độ để đánh giá nội dung các
trang Web có được cập nhập gần nhất hay không.
• Chất lượng (Quality): chất lượng thông tin mà trình thu thập (Crawler) thu
thập được phải cao và số lượng thông tin chất lượng thu thập được phải lớn.
• Bảo đảm (Coverage): chắc chắn rằng các thông tin mong muốn trên trang
Web phải được tải về thành công.
• Khả năng mở rộng (Scalable): kiến trúc của trình thu thập (Crawler) có thể
tăng cường tốc độ thu thập bằng cách tăng thêm các máy phụ và băng thông.
• Mạnh mẽ (Robustness): trong quá trình thu thập, Crawler có thể gặp phải
các bẫy được tạo bởi sever để đánh lừa các Crawler và làm chúng gặp trục trặc ở
đâu đó. Trong trường hợp đó Crawler phải được thiết kế đủ mạnh mẽ để đối phó
với các bẫy như vậy.
• Lịch sự (Politeness): chính sách lịch sự phải được quan tâm khi tiến hành
thu thập các trang Web để tránh làm các trang này quá tải, khía cạnh riêng tư cũng
là một vấn đề tức là họ có thể truy cập vào một phần của trang Web không có
nghĩa là phần đó được công khai.
2.3. Các chính sách trình thu thập dữ liệu cần tuân thủ
Một trình thu thập dữ liệu (Web Crawler) có vô số nhiệm vụ và mục tiêu.
Chúng phải được xử lý cẩn thận mặc dù giữa chúng có nhiều sự trái ngược. Ngoài
ra cũng có nhiều nguồn tài nguyên phải được sử dụng hiệu quả bởi các Crawler,
bao gồm cả băng thông, mà không làm quá tải các trang Web được thu thập. Vì
vậy các chính sách được đi kèm với Crawler để đảm bảo sự đúng mực của nó khi
hoạt động [4].
• Một chính sách lựa chọn để chỉ ra những trang nào cần tải về.
• Một chính sách duyệt lại (re-visit) để chỉ ra khi nào cần kiểm tra các thay
đổi của trang.
• Một chính sách lịch sự (politeness) để chỉ ra làm cách nào để tránh làm các
trang Web đích bị quá tải.

19


• Một chính sách song song (parallelization) để chỉ ra làm cách nào để phối
hợp các trình thu thập Web (Crawler) với nhau.
2.4. 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.
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ị.
2.4.1. Chiến lược thu thập theo chiều sâu – Depth-First Search
Chiến lược thu thập dữ liệu theo chiều sâu sử dụng thuật toán tìm kiếm bằng
cách mở rộng nút đồ thị theo chiều sâu dựa vào một cây hoặc đồ thị cấu trúc dữ
liệu[8]. Bắt đầu tại Seed URL (hoặc một đỉnh bất kì trong trường hợp là đồ thị cấu
trúc dữ liệu), thuật toán sẽ mở rộng xa nhất có thể theo từng nhánh trước khi quay
lại (có thể hiểu nôm na là đi tới đường cụt rồi mới quay lại đường trước đó). Quá
trình thực hiện thuật toán như sau:
while(lấy được URL đầu tiên của Frontier)
{
Lấy trang từ URL qua HTTP;
if(trang chưa được thăm)
{
Đánh dấu trang đã được thăm;
Bóc tách trang;

Tìm các liên kết có trong trang;
if(tìm được liên kết)
{
Thêm liên kết vào đầu Frontier;
}
}
}

Dưới đây là một ví dụ đơn giản về cách thu thập mà chiến lược thu thập dữ liệu
theo chiều sâu áp dụng trên một cây đồ thị:

20


Hình 2.2: Thứ tự các trang được duyệt Depth-First Search
Số thứ tự của các nút trên hình vẽ chính là thứ tự duyệt của các trang đó. Có thể
thấy nút 1 là nút được chọn để bắt đầu mở rộng, hệ thống duyệt qua nút 1 và thu
được 3 nút, hệ thống sẽ chọn tiếp một nút và khám phá sâu nhất có thể tại nút này,
sau đó mới chuyển sang các nút ngang hàng tiếp theo.
2.4.2. Chiến lược thu thập theo chiều rộng – Breadth-First Search
Chiến lược thu thập dữ liệu theo chiều rộng sử dụng thuật toán tìm kiếm
bằng cách mở rộng nút đồ thị theo chiều rộng. Thuật toán sẽ cố gắng thu thập càng
nhiều ở các nút phía trên càng tốt sau đó mới thu thập đến các nút ở mức tiếp theo,
có thể hiểu là, trên một cây đồ thị cấu trúc dữ liệu, thay vì ưu tiên vào độ sâu như
Depth-First Search, Breadth-First Search sẽ ưu tiên theo độ rộng. Quá trình thực
hiện thuật toán như sau:
while(lấy được URL đầu tiên của Frontier)
{
Lấy trang từ URL qua HTTP;
if(trang chưa được thăm)

{
Đánh dấu trang đã được thăm;
Bóc tách trang;
Tìm các liên kết có trong trang;
if(tìm được liên kết)
{
Thêm liên kết vào cuối Frontier;
}
}
}

Dưới đây là ví dụ đơn giản về cách thu thập mà chiến lược thu thập dữ liệu theo
chiều rộng áp dụng trên một cây đồ thị:

21


Hình 2.3: Thứ tự các trang được duyệt Breadth-First Search
Số thứ tự các nút chính là thứ tự duyệt trang của hệ thống. Khác với thu thập theo
chiều sâu, hệ thống thu thập theo chiều rộng sẽ ưu tiên duyệt trước các nút ở trên
trước sau đó mới duyệt đến các nút dưới (là các nút thu thập được ở các nút trên,
trong thuật toán thì URL thu thập được ở các trang sẽ được đưa vào cuối hàng
chờ).
2.4.3. Chiến lược thu thập theo tính ngẫu nhiên – Random-First Search
Chiến lược thu thập dữ liệu theo tính ngẫu nhiên sử dụng thuật toán tìm
kiếm bằng cách chọn ngẫu nhiên một URL từ Frontier rồi mở rộng từ nó. Quá trình
thực hiện như sau:
while(lấy được URL ngẫu nhiên của Frontier)
{
Lấy trang từ URL qua HTTP;

if(trang chưa được thăm)
{
Đánh dấu trang đã được thăm;
Bóc tách trang;
Tìm các liên kết có trong trang;
if(tìm được liên kết)
{
Thêm liên kết vào cuối Frontier;
}
}
}

2.4.4. Chiến lược thu thập dữ liệu theo lựa chọn tốt nhất – Naive Best-First Search
Chiến lược thu thập dữ liệu theo lựa chọn tốt nhất (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 để
22


so sánh một truy vấn với một trang văn bản. Độ tương đồng cosin của trang p và
truy vấn q được tính bằng công thức:
Độ tương đồng (p,q) = vp*vq
Trong đó vp,vq là các vectơ đại diện được tính dựa trên tần số phát sinh (term
frequency). Tần số phát sinh có thể hiểu là số lần xuất hiện của các từ truy vấn q
trong trang p. vp*vq là tích vô hướng của 2 vectơ.
• Nếu độ tương đồng = -1 tức là khác nhau tuyệt đối.
• Nếu độ tương đồng = 0 tức là độc lập với nhau.

• Nếu độ tương đồng = 1 tức là chính xác tuyệt đối
• 0 < độ tương đồng < 1 tức là trang p có liên quan đến truy vấn q.
• -1< độ tương đồng < 0 tức là trang p không có liên quan đến truy vấn q.
Quá trình thu thập dữ liệu được thực hiện như sau[12]:
while(sắp xếp Frontier theo điểm số ,lấy được URL đầu tiên của Frontier)
{
Lấy trang từ URL qua HTTP;
if(trang chưa được thăm)
{
Đánh dấu trang đã được thăm;
Bóc tách trang;
Tìm các liên kết có trong trang;
if(tìm được liên kết)
{
Thêm liên kết vào đầu Frontier;
}
}
}

Ngoài ra chiến lược thu thập dữ liệu theo lựa chọn tốt nhất 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 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).
2.5. Các kỹ thuật thu thập dữ liệu
Các kỹ thuật thu thập dữ liệu được sử dụng bởi nhiều công cụ tìm kiếm như
Google Search, Bing, … Sau đây là một số kỹ thuật thu thập dữ liệu căn bản:


23


2.5.1. Thu thập dữ liệu tập trung – Focused Crawler
• Lịch sử của trình thu thập dữ liệu tập trung
Khi các trình thu thập dữ liệu xuất hiện, chúng chiếm một vai trò cực kì
quan trọng trên Internet, là trái tim của bất kì hệ thống tìm kiếm nào. Trình thu
thập dữ liệu tiêu chuẩn lúc đó là một công nghệ mạnh mẽ để thu thập các trang
Web, tuy nhiên đi kèm với nó lại nảy sinh một vấn đề là trình thu thập này tốn quá
nhiều tài nguyên cả ở máy trạm và máy chủ. Vì vậy, hầu hết các nhà nghiên cứu
đều tập trung vào phát triển thuật toán mà có thể thu thập những trang Web có liên
quan nhất với chủ đề mong muốn. Khái niệm thu thập dữ liệu tập trung được giới
thiệu lần đầu tiên bởi Chakrabarti, Berg và Dom vào năm 1999 đã chỉ ra các thu
thập Web tập trung vào các chủ đề xác định. Nhằm mục tiêu tiết kiệm các tài
nguyên phần cứng, tài nguyên mạng, một trình thu thập dữ liệu tập trung đã ra đời.
Trình thu thập này phân tích các trang Web thu thập được để tìm ra các liên kết có
liên quan nhất đến chủ đề tìm kiếm và loại bỏ những phần không liên quan[9].
Chakrabarti, Berg và Dom đã mô tả một trình thu thập dữ liệu tập trung với
3 thành phần bao gồm: phần phân loại, phần chắt lọc và phần thu thập. Trong đó
phần phân loại sẽ đánh giá xem trang Web có liên quan đến chủ đề mong muốn
hay không. Phần chắt lọc sẽ xác định các nút có liên quan bằng cách sử dụng một
vài lớp liên kết. Phần thu thập sẽ thu thập dữ liệu dựa trên sự điều chỉnh bởi phần
phân loại và chắt lọc. Chakrabarti, Berg và Dom đã cố gắng áp dụng các biện pháp
khác nhau trong việc thiết kế ra phần phân loại và phần chắt lọc như khám phá các
liên kết về mặt xã hội, khám phá các trang Web cụ thể dựa trên các truy vấn đưa
ra, đưa vấn đề lên cộng đồng để thảo luận. Mục đích cuối cùng là để cải thiện khả
năng thu thập với chất lượng cao và giảm tỉ lệ thu thập các trang ít liên quan.
• Khái niệm về trình thu thập dữ liệu tập trung
Một trình thu thập tiêu chuẩn thu thập qua tất cả các trang bằng chiến lược

thu thập theo chiều rộng. Vì vậy nếu muốn thu thập một lúc nhiều tên miền thì
mức độ hiệu quả là không cao. Hình dưới đây cho ta thấy cách mà trình thu thập
tiêu chuẩn hoạt động.

24


Hình 2.4: Trình thu thập dữ liệu tiêu chuẩn
Nếu như trình thu thập tiêu chuẩn duyệt qua tất cả các trang thì đối với một trình
thu thập tập trung, các trang không hoặc ít liên quan đến chủ đề mong muốn sẽ bị
loại bỏ.

Hình 2.5: Trình thu thập dữ liệu tập trung
Dưới đây là sơ đồ của hệ thống thu thập dữ liệu tập trung. Trong đó, hàng chờ
URL (URL Web) chứa các URL chưa được thăm, được khởi tạo bởi các Seed
URL, và được liên tục duy trì bởi một trình thu thập (Web page Downloader).
Trình thu thập này sẽ sử dụng các URL lấy ở hàng chờ để tải về các trang tương
ứng trên mạng Internet. Bộ phận phân tích và chiết xuất (Parser & Extractor) sẽ lấy
thông tin ví dụ như các điều kiện (terms), các liên kết ở trang đã tải về. Bộ phận
tính toán mức độ liên quan (Relevance Calculation) sẽ tính toán mức độ liên quan
giữa trang tải về với chủ đề mong muốn, và ghi lại điểm số cho các liên kết URL
thu được từ trang đó. Bộ phận lọc (Topic filter) sẽ phân tích xem nội dung của
trang đó có liên quan đến chủ đề hay không. Nếu trang đó có liên quan,
các
liên kết URL thu được từ trang đó sẽ được thêm vào hàng chờ, còn nếu không
chúng sẽ được thêm vào phần nền ít liên quan (Irrelevant Matrix)[5].

25



×