1. Trang chủ
  2. » Công Nghệ Thông Tin

Ứng dụng công nghệ web crawler và web scraper xây dựng website thu thập và tổng hợp thông tin tìm việc làm trên internet

70 1,1K 5

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 70
Dung lượng 1,33 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Nội dung của đồ án 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 web crawler và kỹ thuật bóc tách dữ liệu web web scraper - Xây dựng một

Trang 1

Tôi cũng xin được bày tỏ lời cảm ơn tới các thầy cô trong bộ môn Mạng

& Truyền thông cũng như các thầy cô ở trường đã nhiệt tình giảng dạy để giúpchúng tôi có được như ngày hôm nay

Cuối cùng là lời cảm ơn tới gia đình, bạn bè những người luôn sát cánhbên tôi những lúc khó khăn, luôn ủng hộ giúp đỡ để tôi hoàn thành đồ án này

Trang 2

LỜI CAM ĐOAN

Tôi xin cam đoan đồ án tốt nghiệp “Ứng dụng công nghệ web crawler vàweb scraper xây dựng website thu thập và tổng hợp thông tin tìm việc làm trêninternet” là công trình nghiên cứu của bản thân Những phần sử dụng tài liệutham khảo trong đồ án đã được nêu rõ trong phần tài liệu tham khảo Các số liệu,kết quả trình bày trong đồ án là hoàn toàn trung thực, nếu sai tôi xin chịu hoàntoàn trách nhiệm và chịu mọi kỷ luật của bộ môn và nhà trường đề ra

Tác giả đồ ánHoàng Minh Tuấn

Trang 3

TÓM TẮT NỘI DUNG

Do nhu cầu thu thập thông tin của con người ngày càng tăng, lượng thôngtin trên internet ngày càng phong phú nên vấn đề tổng hợp thông tin ngày càngtrở nên bức thiết Với một lượng dữ liệu lớn việc thu thập bằng tay tốn rất nhiềucông sức, và không đạt hiệu quả cao, chính vì thế cần một công nghệ có thể tổnghợp thông tin một cách tự động và trình thu thập web đã ra đời

Đề tài đặt ra vấn đề tìm hiểu về trình thu thập thông tin 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 thông tin tự động từ một sốwebsite tìm việc làm là trang http://vieclam.24h.com.vn/ và tranghttp://www.vietnamworks.com/ Ứng dụng được xây dựng bằng công nghệASP.NET MVC 3 trên nền ngôn ngữ C# tương tác với cơ sở dữ liệu SQL Serverdựa trên các tiêu chí: tốc độ thu thập nhanh, cơ sở dữ liệu gọn nhẹ, đảm bảo tínhtoàn vẹn của tài liệu gốc

Trang 4

MỤC LỤC

MỞ ĐẦU 7

CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI 9

1.1 GIỚI THIỆU TỔNG QUAN VỀ ĐỀ TÀI 9

1.2 GIỚI THIỆU VỀ TRÌNH THU THẬP WEB 9

1.3 TỔNG QUAN VỀ NGÔN NGỮ VÀ NỀN TẢNG SỬ DỤNG 11

1.3.1 Net Framework 11

1.3.2 Tổng quan về ASP.NET MVC 12

1.3.3 Ngôn ngữ C# 14

1.3.4 SQL Server 2008 21

CHƯƠNG 2: TÌM HIỂU VỀ TRÌNH THU THẬP WEB 25

2.1 CÁCH XÂY DỰNG MỘT HẠ TẦNG THU THẬP 25

2.1.1 Frontier 26

2.1.2 Lược sử và kho lưu trữ trang 28

2.1.3 Cách lấy trang 29

2.1.4 Bóc tách trang (web scraper) 31

2.1.5 Trình thu thập đa luồng 35

2.2 CÁC CHIẾN LƯỢC THU THẬP DỮ LIỆU 36

2.2.1 Chiến lược thu thập dữ liệu theo chiều sâu 37

2.2.2 Chiến lược thu thập dữ liệu theo chiều rộng 37

2.2.3 Chiến lược thu thập dữ liệu theo ngẫu nhiên 38

2.2.4 Chiến lược thu thập dữ liệu theo lựa chọn tốt nhất ngây thơ 39

2.3 ĐÁNH GIÁ CỦA TRÌNH THU THẬP 41

2.3.1 Độ quan trọng của trang web 42

2.3.2 Phân tích tổng quát 43

CHƯƠNG 3: XÂY DỰNG WEBSITE THU THẬP VÀ TỔNG HỢP THÔNG TIN TÌM VIỆC LÀM 47

3.1 CÁC KIẾN THỨC NỀN TẢNG 47

3.1.1 Mạng toàn cầu 47

3.1.2 Giao thức truyền tải siêu văn bản 50

3.1.3 Ngôn ngữ đánh dấu siêu văn bản 50

3.1.4 Kiến trúc HTML DOM 52

3.2 SƠ LƯỢC VỀ CÁC KĨ THUẬT XÂY DỰNG CHƯƠNG TRÌNH 53

3.3 CÁC CÔNG CỤ VÀ THƯ VIỆN HỖ TRỢ 54

3.3.1 Thư viện HtmlAgilityPack 54

3.3.2 Add-on firebug của firefox 54

Trang 5

3.4 PHÂN TÍCH 55

3.4.1 Cấu trúc phổ biến của 1 website tìm việc làm 55

3.4.2 Quy trình thu thập và chọn lọc thông tin 58

3.5 THIẾT KẾ 60

3.5.1 Cấu trúc CSDL 61

3.5.2 Module window service 61

3.5.3 ASP.NET Website 65

KẾT LUẬN 66

CÁC KẾT QUẢ ĐÃ ĐẠT ĐƯỢC 66

HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI 66

Trang 6

BẢNG DANH MỤC CÁC HÌNH MINH HỌA

Trang 7

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àmcho cuộc sống của con người văn minh, hiện đại hơn Sự ra đời của internetchí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ốicuộ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 đề nghiên cứu về trình thu thập thông tin 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 thông tin tự động từcác trang web tìm kiếm việc làm Đề tài nếu thành công thì trước mắt sẽ là công

cụ hữu hiệu giúp kết nối người lao động với các nhà tuyển dụng sau đó 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âydựng nên một hệ thống máy tìm kiếm cho người Việt Nam

Nội dung của đồ án 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 (web crawler)

và kỹ thuật bóc tách dữ liệu web (web scraper)

- Xây dựng một ứng dụng website tổng hợp thông tin về việc làm từ nhiều nguồn khác nhau trên internet

Trang 8

Để giải quyết được các mục tiêu này, đồ án được chia thành ba chương lớn:

Chương 1: Tổng quan về đề tài

Trong chương này sẽ giới thiệu tổng quan về đề tài, mục đích cũng như ý nghĩa thực tiễn, các công nghệ liên quan, ngôn ngữ sử dụng

Chương 2: Tìm hiểu về trình thu thập web

Trong chương này sẽ tìm hiểu các khái niệm cơ bản trong trình thu thậpweb 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ànhphầ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 đánhgiá của trình thu thập đối với trang web Qua đó chúng ta sẽ có một cái nhìnchung 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 3: 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 và các thư viện hỗtrợ, ở 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 caohiệ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ụngthông qua việc xây dựng hệ thống cơ sở dữ liệu, Crawler Service và website

Trang 9

CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI1.1 GIỚI THIỆU TỔNG QUAN VỀ ĐỀ TÀI

Đề tài đặt ra vấn đề tìm hiểu về trình thu thập thông tin trên web, từ đó xây dựng một ứng dụng có khả năng tổng hợp thông tin tự động từ một số web tìm việc làm.Website có nguồn dữ liệu phong phú, đa dạng, thông tin cập nhật thường xuyên đáp ứng nhu cầu tìm việc làm cho người lao động

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ữngtên khá tượng hình như bọ web, rô-bốt, 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 đángkinh ngạc, có thể thu thập dữ liệu lên đến hàng chục ngàn trang trong vòng mộtvà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ủaviệc thiết kế trình thu thập web là lấy được nội dung các trang web và thêmchú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ưutrữ 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áctrang hạt giống Khi ghé thăm một trang hạt giống, trình thu thập sẽ đọc nội dungtrang web, lọc ra tất cả các siêu liên kết (hyperlink) có trong trang web đó và đưacá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ựavà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 đã thuthậ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úaliê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 10

trang HTML, bóc tách nội dung trang HTML vv Ở phần sau của đồ á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àomộ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ôngcầ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 giancon liên tục phát triển và thay đổi nhanh một cách chóng mặt, vì thế thông tinphả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ôngphả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ậtbó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ộttrang 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ácsiê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 đồ á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 racá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 searchengine 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

Trang 11

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ựatrên kinh nghiệm (heuristic) Ngoài ra, chúng ta có thể sử dụng trình thu thậpweb để xây dựng các phần mềm tập trung thông tin, các trang web tổng hợpthông tin, dựa trên cơ chế tự động tìm và phát hiện tài nguyên

1.3 TỔNG QUAN VỀ NGÔN NGỮ VÀ NỀN TẢNG SỬ DỤNG

Hệ thống được phát triển trên nền: NET Framework 3.5 Công cụ pháttriển Microsoft Visual Studio 2010 sử dụng ngôn ngữ lập trình C# và Asp.netMVC 3 Hệ quản trị cơ sở dữ liệu Sql Server 2008

Trong phần tiếp theo tôi sẽ trình bày chi tiết hơn về các công nghệ sửdụng để xây dựng ứng dụng website tổng hợp thông tin

1.3.1 Net Framework

.NET Framework 3.5 của Microsoft là một khung lập trình tập hợp các thưviện lập trình có thể được cài thêm hoặc đã có sẵn trong các hệ điều hànhWindows Nó cung cấp những giải pháp thiết yếu cho những yêu cầu thôngthường của các chương trình điện toán như lập trình giao diện người dùng, truycập dữ liệu, kết nối cơ sở dữ liệu, ứng dụng web, các giải thuật số học và giaotiếp mạng Ngoài ra, khung lập trình NET quản lý việc thực thi các chươngtrình NET do đó người dùng cần phải cài NET để có thể chạy các chương trình

Trang 12

Mô hình kiến trúc Net FrameWork:

Ảnh 1.1: Kiến trúc Net FrameWork

Kiến trúc Net Framework gồm 3 tầng:

- Tầng ứng dụng: gồm có ASP.Net và Windows Forms

- Tầng giữa: cung cấp các thư viện lập trình cơ sở

- Tầng dưới cùng: quản lý việc biên dịch và chạy các ứng dụng

- Tầng dưới cùng Common Language Runtime (CLR) là tẩng tâm điểm vàquan trọng nhất của Net Framework Khi sử dụng Net Framework, chúng

ta sẽ không còn phải quá quan tâm đến việc lựa chọn ngôn ngữ nào đểphát triển ứng dụng Thậm chí trong 1 ứng dụng ta có thể viết bằng nhiềungôn ngữ Net khác nhau Có được điều này là do tất cả các ngôn ngữ Netđều được quản lý bởi CLR

1.3.2 Tổng quan về ASP.NET MVC

A, Nguồn gốc ASP.NET MVC

Công nghệ ASP.NET MVC là mới, tuy nhiên nó có lịch sử lâu đời Nềntảng MVC được phát minh bởi Trygve Renskaug, ông đã viết trang giấy đầu tiên

Trang 13

nói về MVC vào năm 1978 Ban đầu nó được gọi là Thing Model View Editorpattern, nhưng sau đó nó được đặt tên lại là Model View Controller pattern.

ASP.NET MVC lần đầu tiên xuất hiện đó là trong dự án mã nguồn mởMonoRail Và nguồn gốc thật sự để cho ra đời công nghệ Microsoft ASP.NETMVC là do Scott Guthrie (một trong những nhà sáng tạo ra ASP.NET) trênchuyến bay đến Austin, Texas để nói về hội thảo Alt.NET vào tháng 10-2007.Cuối cùng thì đầu năm 2009 phiên bản ASP.NET MVC 1.0 (released)

- View: View của MVC chứa các thẻ HTML và view logic.View làcác thành phần chịu trách nhiệm hiển thị các thông tin lên chongười dùng thông qua giao diện Thông thường, các thông tin cầnhiển thị được lấy từ thành phần Models Ví dụ, đối tượng Product

có một "Edit" view bao gồm các textboxes, các dropdowns vàcheckboxes để chỉnh sửa các thuộc tính của sản phẩm; có một

"Display" view gồm 2 dòng, cột dòng là ProductID, dòng sau làOrderDate để xem thông tin về sản phẩm

- Controller: Chịu trách nhiệm xử lý các tác động về mặt giao diện,các thao tác đối với models, và cuối cùng là chọn một view thíchhợp để hiển thị ra màn hình Trong kiến trúc MVC, view chỉ có tácdụng hiển thị giao diện mà thôi, còn điều kiển dòng nhập xuất của

Trang 14

người dùng vẫn do Controllers đảm trách Controller của MVCchứa tính logic trong lưu đồ điều khiển

Ảnh 1.2: Mô hình MVC

C, Những lợi ích của mô hình MVC

ASP.NET MVC là một framework được Microsoft phát triển với cấu trúcchia thành ba tầng model-view-controller: đầu vào của controller là các điềukhiển thông qua HTTP request, model chứa các miền logic, view là những thứđược sinh ra trả về cho trình duyệt

Lợi ích của việc dùng phương pháp MVC là sự phân đoạn rõ ràng giữamodels, views, controllers bên trong ứng dụng Cấu trúc sạch sẽ giúp cho việckiểm tra lỗi ứng dụng trở nên dễ dàng hơn, mặt khác microsoft còn hổ trợNhibernate được thiết kế riêng cho tầng model với độ mềm dẻo khá cao

1.3.3 Ngôn ngữ C#

C# là một ngôn ngữ rất đơn giản, với khoảng 80 từ khoá và hơn mười kiểu

dữ liệu dựng sẵn, nhưng C# có tính diễn đạt cao C# hỗ trợ lập trình có cấu trúc,hướng đối tượng, hướng thành phần (component oriented) Trọng tâm của ngônngữ hướng đối tượng là lớp Lớp định nghĩa kiểu dữ liệu mới, cho phép mở rộngngôn ngữ theo hướng cần giải quyết C# có những từ khoá dành cho việc khaibáo lớp, phương thức, thuộc tính (property) mới C# hỗ trợ đầy đủ khái niệm trụcột trong lập trình hướng đối tượng: đóng gói, thừa kế, đa hình

Trang 15

Định nghĩa lớp trong C# không đòi hỏi tách rời tập tin tiêu đề với tập tin cài đặtnhư C++ Hơn thế, C# hỗ trợ kiểu sưu liệu mới, cho phép sưu liệu trực tiếp trongtập tin mã nguồn Đến khi biên dịch sẽ tạo tập tin sưu liệu theo định dạng XML.

C# hỗ trợ khái niệm giao diện, interfaces (tương tự Java) Một lớp chỉ cóthể kế thừa duy nhất một lớp cha nhưng có thế cài đặt nhiều giao diện

C# có kiểu cấu trúc, struct (không giống C++) Cấu trúc là kiểu hạng nhẹ

và bị giới hạn.Cấu trúc không thể thừa kế lớp hay được kế thừa nhưng có thể càiđặt giao diện

C# cung cấp những đặc trưng lập trình hướng thành phần như property, sựkiện và dẫn hướng khai báo (được gọi là attribute) Lập trình hướng componentđược hỗ trợ bởi CLR thông qua siêu dữ liệu (metadata) Siêu dữ liệu mô tả cáclớp bao gồm các phương thức và thuộc tính, các thông tin bảo mật …

Assembly là một tập hợp các tập tin mà theo cách nhìn của lập trình viên

là các thư viện liên kết động (DLL) hay tập tin thực thi (EXE) Trong NET mộtassembly là một đon vị của việc tái sử dụng, xác định phiên bản, bảo mật, vàphân phối CLR cung cấp một số các lớp để thao tác với assembly

C# cũng cho truy cập trực tiếp bộ nhớ dùng con trỏ kiểu C++, nhưng vùng

mã đó được xem như không an toàn CLR sẽ không thực thi việc thu dọn rác tựđộng các đối tượng được tham chiếu bởi con trỏ cho đến khi lập trình viên tự giảiphóng

A, Lớp và đối tượng

Đối tượng:

Bản chất của lập trình hướng đối tượng là tạo ra các kiểu mới Một kiểubiểu diễn một vật gì đó Giống với các ngôn ngữ lập trình hướng đối tượng khác,một kiểu trong C# cũng định nghĩa bằng từ khoá class (và được gọi là lớp) cònthể hiện của lớp được gọi là đối tượng

Đối tượng là một trị có thể được tạo ra, lưu giữ và sử dụng Trong C# tất

cả các biến đều là đối tượng Các biến kiểu số, kiểu chuỗi … đều là đối tượng

Trang 16

Mỗi một đối tượng đều có các biến thành viên để lưu giữ dữ liệu và có cácphương thức (hàm) để tác động lên biến thành viên Mỗi đối tượng thuộc về mộtlớp đối tương nào đó Các đối tượng có cùng lớp thì có cùng các biến thành viên

và phương thức

Lớp:

Định nghĩa một lớp mới với cú pháp như sau:

[attribute][bổ từ truy xuất] class định danh [:lớp cơ sở]

Trang 17

int Year; int Month; int Date;

int Hour; int Minute; int Second;

Các hành vi của một lớp được gọi là các phương thức thành viên (gọi tắt

là phương thức) của lớp đó Một phương thức là một hàm (phương thức thànhviên còn gọi là hàm thành viên) Các phương thức định nghĩa những gì mà mộtlớp có thể làm Cách khai báo, nội dung và cách sử dụng các phương thức giốnghoàn toàn với Java và C++ Trong ví dụ trên có một phương thức đặc biệt làphương thức Main() (như hàm main() trong C++) là phương thức bắt đầu củamột ứng dụng C#, có thể trả về kiểu void hay int Mỗi một chương trình

Trang 18

(assembly) có thể có nhiều phương thức Main nhưng khi đó phải chỉ địnhphương thức Main() nào sẽ bắt đầu chương trình.

Mỗi phương thức có thể không có tham số mà cũng có thể có nhiềutham số Các tham số theo sau tên phương thức và đặt trong cặp ngoặc đơn

C, Tổng kết về ngôn ngữ C#

Bên trên là những vấn đề cơ bản nhất của ngôn ngữ C# và nền tảng NetFramework Có thể tổng kết lại những đặc điểm và ưu điểm của ngôn ngữ nàynhư sau:

- C# là ngôn ngữ đơn giản

- C# là ngôn ngữ hiện đại

- C# là ngôn ngữ hướng đối tượng

- C# là ngôn ngữ mạnh mẽ và mềm dẻo

- C# là ngôn ngữ có ít từ khóa

- C# là ngôn ngữ hướng module

- C# sẽ trở nên phổ biến

C# loại bỏ một vài sự phức tạp và rối rắm của những ngôn ngữ như Java

và c++, bao gồm việc loại bỏ những macro, những template, đa kế thừa, và lớp

cơ sở ảo (virtual base class) Chúng là những nguyên nhân gây ra sự nhầm lẫnhay dẫn đến những vấn đề cho các người phát triển C++ Nếu chúng ta là ngườihọc ngôn ngữ này đầu tiên thì chắc chắn là ta sẽ không trải qua những thời gian

để học nó! Nhưng khi đó ta sẽ không biết được hiệu quả của ngôn ngữ C# khiloại bỏ những vấn đề trên

Ngôn ngữ C# đơn giản vì nó dựa trên nền tảng C và C++ Nếu chúng tathân thiện với C và C++ hoậc thậm chí là Java, chúng ta sẽ thấy C# khá giống vềdiện mạo, cú pháp, biểu thức, toán tử và những chức năng khác được lấy trực tiếp

từ ngôn ngữ C và C++, nhưng nó đã được cải tiến để làm cho ngôn ngữ đơn giảnhơn Một vài trong các sự cải tiến là loại bỏ các dư thừa, hay là thêm vào những

cú pháp thay đổi Ví dụ như, trong C++ có ba toán tử làm việc với các thành viên

là ::, , và -> Để biết khi nào dùng ba toán tử này cũng phức tạp và dễ nhầm lẫn

Trang 19

Trong C#, chúng được thay thế với một toán tử duy nhất gọi là (dot) Đối vớingười mới học thì điều này và những việc cải tiến khác làm bớt nhầm lẫn và đơngiản hơn.

C# là ngôn ngữ hướng đối tượng:

Những đặc điểm chính của ngôn ngữ hướng đối tượng (Object-orientedlanguage) là sự đóng gói (encapsulation), sự kế thừa (inheritance), và đa hình(polymorphism) C# hỗ trợ tất cả những đặc tính trên

C# là ngôn ngữ mạnh mẽ và cũng mềm dẻo:

Như đã đề cập trước, Ngôn ngữ C# chỉ bị giới hạn ở chính bởi bản thânhay là trí tưởng tượng của người lập trình Ngôn ngữ này không đặt những ràngbuộc lên những việc có thể làm C# được sử dụng cho nhiều các dự án khác nhaunhư là tạo ra ứng dụng xử lý văn bản, ứng dụng đồ họa, bản tính, hay thậm chínhững trình biên dịch cho các ngôn ngữ khác

C# là ngôn ngữ ít từ khóa:

C# là ngôn ngữ sử dụng giới hạn những từ khóa Phần lớn các từ khóađược sử dụng để mô tả thông tin Chúng ta có thể nghĩ rằng một ngôn ngữ cónhiều từ khóa thì sẽ mạnh hơn Điều này không phải sự thật, ít nhất là trongtrường hợp ngôn ngữ C#, chúng ta có thể tìm thấy rằng ngôn ngữ này có thểđược sử dụng để làm bất cứ nhiệm vụ nào

C# là ngôn ngữ hướng module:

Mã nguồn C# có thể được viết trong những phần được gọi là những lớp,những lớp này chứa các phương thức thành viên của nó Những lớp và nhữngphương thức có thể được sử dụng lại trong ứng dụng hay các chương trình khác.Bằng cách truyền các mẫu thông tin đến những lớp hay phương thức có thể tạo ranhững mã nguồn dùng lại có hiệu quả

C# sẽ là một ngôn ngữ phổ biến:

C# là một trong những ngôn ngữ lập trình mới nhất và phổ biến vì tínhđơn giản, hướng đối tượng, mạnh mẽ…

Trang 20

Ngôn ngữ C# và những ngôn ngữ khác:

Có nhiều ngôn ngữ khác như Visual Basic, C++ và Java Vậy sự khác biệtcủa C# và những ngôn ngữ đó là gì? Và tại sao lại chọn ngôn ngữ này để học màkhông chọn một trong những ngôn ngữ kia Có rất nhiều lý do, và dưới đây làmột số lý do:

Microsoft nói rằng C# mang đến sức mạnh của ngôn ngữ C++ với sự dễdàng của ngôn ngữ Visual Basic Có thể nó không dễ như Visual Basic, nhưngvới phiên bản Visual Basic.NET (Version 7) thì ngang nhau Bởi vì chúng đượcviết lại từ một nền tảng Chúng ta có thể viết nhiều chương trình với ít mã nguồnhơn nếu dùng C#

Mặc dù C# loại bỏ một vài các đặc tính của C++, nhưng bù lại nó tránhđược những lỗi mà thường gặp trong ngôn ngữ C++ Điều này có thể tiết kiệmđược hàng giờ hay thậm chí hàng ngày trong việc hoàn tất một chương trình

Một điều quan trọng khác với C++ là mã nguồn C# không đòi hỏi phải cótập tin header Tất cả mã nguồn được viết trong khai báo một lớp

Như đã nói ở bên trên .NET runtime trong C# thực hiện việc thu gom bộnhớ tự động Do điều này nên việc sử dụng con trỏ trong C# ít quan trọng hơntrong C++ Những con trỏ cũng có thể được sử dụng trong C#, khi đó nhữngđoạn mã nguồn này sẽ được đánh dấu là không an toàn (unsafe code)

C# cũng từ bỏ ý tưởng đa kế thừa như trong C++ Và sự khác nhau khác làC# đưa thêm thuộc tính vào trong một lớp giống như trong Visual Basic Vànhững thành viên của lớp được gọi duy nhất bằng toán tử “.” khác với C++ cónhiều cách gọi trong các tình huống khác nhau

Điểm giống nhau C# và Java là cả hai cùng biên dịch ra mã trung gian: C#biên dịch ra MSIL còn Java biên dịch ra bytecode Sau đó chúng được thực hiệnbằng cách thông dịch hoặc biên dịch just-in-time trong từng máy ảo tương ứng.Tuy nhiên, trong ngôn ngữ C# nhiều hỗ trợ được đưa ra để biên dịch mã ngônngữ trung gian sang mã máy C# chứa nhiều kiểu dữ liệu cơ bản hơn Java vàcũng cho phép nhiều sự mở rộng với kiểu dữ liệu giá trị Ví dụ, ngôn ngữ C# hỗ

Trang 21

trợ kiểu liệt kệ (enumerator), kiểu này được giới hạn đến một tập hằng được địnhnghĩa trước, và kiểu dữ liệu cấu trúc đây là kiểu dữ liệu giá trị do người dùngđịnh nghĩa Tương tự như Java, C# cũng từ bỏ tính đa kế thừa trong một lớp, tuynhiên mô hình kế thừa đơn này được mở rộng bởi tính đa kế thừa nhiều giaodiện.

Chính vì những ưu điểm trên mà ngôn ngữ C# được chọn để thực hiệnứng dụng trong đề tài này

1.3.4 SQL Server 2008

Microsoft SQl server là một hệ quản trị cơ sở dữ liệu quan hệ (relational database management system – RDBMS) do Microsoft phát triển SQL Server là một hệ quản trị cơ sở dữ liệu quan hệ mạng máy tính hoạt động theo mô hình khách chủ cho phép đồng thời cùng lúc có nhiều người dùng truy xuất đến dữ liệu, quản lý việc truy nhập hợp lệ và các quyền hạn của từng người dùng trên mạng Ngôn ngữ truy vấn quan trọng của Microsoft SQL server là Transact-SQL.Transact-SQL là ngôn ngữ SQL mở rộng dựa trên SQL chuẩn của ISO

(International Organization for Standardization) và ANSI (American National Standards Institute) được sử dụng trong SQL

SQL có nhiều phiên bản, ở đây tôi xin nhấn mạnh một số phiên bản nổi bật:

SQL Server 2005: SQL Server 2005, được phát hành vào tháng 11 năm

2005, là phiên bản tiếp theo của SQL Server 2000 SQL Server 2005 tập trung vào khả năng xử lý giao dịch trực tuyến trên diện rộng OLTP ( large-scale online transactional processing), ứng dụng thương mại điện tử (e-commerce

applications) và kho dữ liệu (data warehousing) Ngoài ra, những cải tiến quan trọng trong SQL Server 2005 là thêm các dịch vụ mới như: dịch vụ báo cáo Reporting Services, Service Broker và sự thay đổi đáng kể trong Database

Engine

SQL Server 2008: Đây là phiên bản mới nhất của SQl Server, có tên mã là

“katmai” Ngày 27/02/2008 , Microsoft tổ chức một sự kiện có tên Heroes

Trang 22

Happen Here nhằm giới thiệu sản phẩm mới SQL Server 2008 (cùng với những sản phẩm khác như Windows Server 2008; Visual Studio 2008).

Microsoft SQL server 2008 có những điểm mới, tiến bộ sau:

- Một trong điểm nổi bật khi xem xét về SQL Server 2008 của Microsoft là tính năng phân loại biệt ngữ mới và các lợi ích vào trong nhóm hoặc các vùng chính Có bốn vùng chính đó là Enterprise Data Platform, Dynamic Development, Beyond Relational Database, và Pervasive Insight

- SQL Server 2008 có tác dụng đòn bẩy cho công nghệ NET 3.0 (Dot Net Framework 3.0) với LINQ (Language Integrated Query – ngôn ngữ truy vấn tích hợp) Thêm vào đó là sự hỗ trợ hiệu quả hơn cho các thực thể dữ liệu doanh nghiệp cùng với các tùy chọn đồng bộ dữ liệu

- Mã hóa dữ liệu: trong suốt cho phép toàn bộ cơ sở dữ liệu, các bảng và dữ liệu có thể được mã hóa mà không cần phải lập trình ứng dụng Trong SQL Server 2008, toàn bộ cơ sở dữ liệu đều có thể được mã hóa bằng SQL Engine Phương pháp này mã hóa tất cả dữ liệu và các file bản ghi cho cơ sở dữ liệu Bằng sử dụng phương pháp này, tất cả các chỉ mục và bảng cũng được mã hóa

- Tính năng mã hóa tiếp theo là Backup Encryption SQL Server 2008 có một phương pháp mã hóa các backup dùng để tránh lộ và can thiệp của người khác vào dữ liệu Thêm vào đó, việc phục hồi backup có thể được hạn chế với từng người dùng cụ thể

- Cuối cùng, có một số tùy chọn mới cho External Key Management Nếu bạn có dính dáng tới việc xử lý thẻ tín dụng hoặc PCI (thẻ trả trước), thì SQL Server 2008 sẽ hỗ trợ Hardware Security Modules (HSM) – mô đun bảo mật phần cứng Các mô đun này là giải pháp phần cứng của nhóm thứ

ba được sử dụng để lưu các Key ở một địa điểm phân biệt với dữ liệu mà chúng bảo vệ

- Backup có thể được mã hóa để ngăn chặn việc lộ và thay đổi dữ liệu Sự thay đổi và truy cập dữ liệu có thể được thẩm định Thêm vào việc thẩm

Trang 23

định chuẩn cho logon / logoff và các thay đổi được phép, SQL Server

2008 cho phép kiểm tra sự thay đổi hay truy cập dữ liệu

- Fact Tables có thể được nén với hiệu suất cao SQL Server Data

Compression đã thực sự thực hiện được mục tiêu chính là giảm kích thướccủa Fact Table Vì vậy liên quan với việc lưu trữ trên các ổ đĩa cứng, với các file vật lý nhỏ hơn, số lần backup được giảm

- Tài nguyên chủ có thể được bảo đảm an toàn Quản lý tài nguyên -

Resource Governor - trong SQL Server 2008 cũng là một điểm mới Governor được sử dụng để hạn chế người dùng hoặc nhóm người dùng chiphối các lớp tài nguyên mức cao Điểm mới trong SQL Server 2008 phải

kể đến nữa là Performance Studio Studio là một trong các công cụ hiệu suất Cùng với đó chúng có thể được sử dụng cho việc kiểm tra, xử lý sự

cố, điều chỉnh và báo cáo Thành phần Data Collector của Studio có thể cấu hình Nó hỗ trợ một số phương pháp chọn gồm có các truy vấn TSQL,SQL Trace, và Perfmon Counters Dữ liệu cũng có thể được chọn bằng lậptrình Khi dữ liệu được chọn, có các tùy chọn báo cáo chung

- SQL 2008 hỗ trợ Hot Plug CPU trong SQL Server 2008, các CPU cắm thêm có thể được bổ sung vào nếu phần cứng của hệ thống hỗ trợ nó

- Bộ đếm hiệu suất được mở rộng Số bộ đếm hiệu suất trong SQL Server

2008 đã được mở rộng hơn so với phiên bản trước đó IO và các bộ đếm hiệu suất bộ nhớ là một cặp có thể được chọn để kiểm tra hiệu suất Dữ liệu đã được chọn bằng bộ đếm sẽ được lưu trong trung tâm lưu dữ liệu tập trung Microsoft phát biểu rằng việc chạy thiết lập hiệu suất mặc định liên quan đến các kiểm tra sẽ tốn ít hơn 5% tài nguyên bộ nhớ và CPU.Có một công cụ Performance Dashboard có thể đọc dữ liệu hiệu suất đã được lưu

- Việc cài đặt đã được đơn giản hóa Bộ đặt SQL Server 2008 cũng có nhiềunâng cao Dữ liệu cấu hình và các bit “engine” được tách biệt vì vậy nó cóthể tạo một đĩa hệ thống không cấu hình cơ bản phân phối đến một số máychủ dễ dàng hơn Cài đặt có thể cập nhật được các nâng cấp mới nhất từ

Trang 24

website Microsoft Tính năng khác là khả năng cài đặt SQL Server, gói dịch vụ và các bản vá Đi cùng với tính năng này là khả năng gỡ bỏ cài đặtcác gói dịch vụ một cách dễ dàng.

Trang 25

CHƯƠNG 2: TÌM HIỂU VỀ TRÌNH THU THẬP WEB2.1 CÁCH XÂY DỰNG MỘT HẠ TẦNG THU THẬP

Hình bên dưới cho ta thấy một chu trình của một trình thu thập web cơ bản

Ảnh 2.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 URLnà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ònglặ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

Trang 26

- 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ụcdự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 frontierrỗng, đây được gọi là trạng thái kết thúc (dead-end) của trình thu thập

2.1.1 Frontier

Frontier là một danh sách chứa các URL của các trang chưa thăm Trongthuậ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 đếnhà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àofrontier nhanh gần bằng tốc độ thu thập thông tin Nó có thể thêm tới 60000 URLngay khi trình thu thập thu thập dữ liệu của 10000 trang, giả định trung bình mỗitrang 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ắtcủ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 URLmớ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 đượctrí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ớnmỗ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

Trang 27

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ụnghà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ềuviệ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ôngmấ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ànhquá trình thu thập trang tương ứng thay vì việc lấy tất cả URL trong trang nàytrì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ếnthuậ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ảngvớ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ácURL được trích xuất ra được đưa vào frontier và các danh sách URL được sắpxế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ếtthú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ềngiới hạn khá lớn frontier hiếm khi đạt trạng thái rỗng

Trang 28

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ậptruy 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ảorằ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ậytrì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ườngxuyên và các trang được thu thập cũng có xu hướng đa dạng hơn

2.1.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ácURL đượ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ểmtra xem một trang đã được thăm hay chưa Kiểm tra này là khá quan trọng nhằmtrá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íchthướ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ênviệ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ìnhthu 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ủahà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 cungcấ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.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ênnế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ảnhơ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

Trang 29

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ử

2.1.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 Clientcầ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àocác máy chủ chậm hoặc đọc các trang lớn Trong thực tế chúng ta thường hạnchế 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ểnhướng Kiểm tra lỗi và xử lý ngoài luồng là rất quan trọng trong quá trình lấytrang 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ệunào không, do đó nó lấy tất cả những gì có thể Thậm chí dù xác định được tàiliệu vô ích thì nó cũng đã bỏ ra một chi phí đáng kể cho hoạt động thu thập Tiêuchuẩn loại trừ robot (Robot Exclusion Protocol) ra đời

A, 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ềunày, trình thu thập (robot) duy trì một tập tin có tên là robot.txt trong thư mụcgốc của các máy chủ web (ví dụ như http://coltech.vnu.edu.vn/robot.txt) Tệp tinnày chứa hoàn toàn nội dung văn bản text (không phải HTML) Robot.txt chophé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ềukhiển tác vụ của các robot này Nó gồm 2 trường là trường User-agent và trườngDisallow:

- 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 haykhông

Sau đây là các ví dụ minh họa việc sử dụng file robot.txt:

Trang 30

Cú pháp Ghi chú cho Webmaster

User-agent:*

Disallow:

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

Các robot tìm kiếm khác được dò mọi thứ trừ hai thư mục “tmp” và “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

Trang 31

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 robotcho 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ườngDisallow chỉ liệt kê tên thư mục vừa tạo, cấu hình server sao cho các trang khôngchứa đường dẫn đến thư mục này

Trên thực tế cách này không đạt được kết quả mong đợi do một trong cácnguyê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!

2.1.4 Bóc tách trang (web scraper)

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 thuthập 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áytí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ác web scraper được ra đời WebScraper là một thuật ngữ để chỉ các phần mềm có khả năng bóc tách và trích xuấtthông tin chứa trên các web page một cách tự động Công việc này được gọi làweb scraping, web harvesting hoặc web data extraction Các web scraper khácvới web crawler ở chỗ, trong khi web crawler tập trung vào việc duyệt các trangweb thông qua các liên kết hyperlink, thì web scraper lại tập trung vào việcchuyển đổi nội dung không cấu trúc của các trang web (chủ yếu được viết bằngHTML) sang thành nội dung có cấu trúc, sau đó bóc tách, trích xuất phần thôngtin mong muốn và lưu trữ lại vào các cơ sở dữ liệu hoặc spreadsheet Các webscraper cũng có thể thực hiện thêm các công đoạn phân tích dữ liệu sau khi đãtrích xuất được để phục vụ cho một mục đích nào đó Một số ứng dụng của webscraping bao gồm: so sánh giá cả thị trường trực tuyến, nghiên cứu thị trường,

Trang 32

thu thập thông tin để thống kê, theo dõi thông tin thời tiết trên các website dự báothời tiết, tổng hợp tin tức từ nhiều website v.v…

Một số kỹ thuật được sử dụng trong web scraping 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ầnnộ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 regular expression (biểuthức chính quy) để so trùng và tìm kiếm

- Lập trình HTTP: ta có thể lấy được nội dung trang web bằng cách gửi mộtyêu cầu HTTP đến web server, cũng giống như cách web browser làm.Đây cũng là một kỹ thuật được sử dụng bởi các web crawler

- Phân tích cấu trúc DOM: phân tích nội dung HTML của web page và xâydựng một cây DOM (Document Object Model), giúp scraper có thể duyệtcác node trên cây này và chỉ lấy ra phần nội dung mà nó cần

A, 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 cungcấ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ộctí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ộtTrang 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ảichuyể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ềunà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.ICTU.edu.vn chuyển đổi thành http://www.ictu.edu.vn

- Loại bỏ phần ‘tham khảo’ trong URL:

Ví dụ, http://myspiders.biz.uiowa.edu/faq.html#what chuyển đổi thành

Trang 33

http://myspiders.biz.uiowa.edu/faq.html Thực hiện mã hóa URL cho một vàinhững ký tự thường sử dụng như ’~’, Điều này sẽ tránh được việc thu thập lại 1trang Ví dụ, http://dollar.biz.uiowa.edu/~pant/ và http://dollar.biz.uiowa.edu/

%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ụ, http://dollar.biz.uiowa.edu vàhttp://dollar.biz.uiowa.edu/ 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 filenhư index.html hoặc index.htm có thể được loại bỏ trong đường dẫn URLvới thừa nhận rằng đó là những trang mặc định

Điều quan trọng là đảm bảo tính nhất quán trong khi áp dụng các luậtchuẩ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 ápdụng các luật chuẩn hóa URL một cách nhất quán

B, 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ạngcây và phân tích cấu trúc DOM (Document Oject Model) của mô hình này Phântí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 bên dưới cho ta thấy một mô hình câytương ứng với một mã nguồn URL

Trang 34

Ảnh 2.2: 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 quychuẩ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ẻ <br>, <hr> và <li> Ngoài ra khi lồng nhau,các phần tử HTML cũng không cần thiết phải lồng nhau theo đúng thứ tự (tức làthẻ nào mở trước thì phải đóng sau) Ví dụ sau là hợp lệ trong HTML:

<p> Cộng hòa xã hội chủ nghĩa Việt Nam <i><br>Độc lập tự do hạnhphúc</p></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ầnmộ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êuchuẩn, quá trình này gọi là chuẩn hóa các trang HTML Quá trình này bao gồmviệ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ếplạ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 để

Trang 35

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ênkế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áchnhư vậy cũng được hỗ trợ trong nhiều ngôn ngữ lập trinh.

2.1.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 truycập mạng) hoặc mạng nhàn rỗi (trong các hoạt động của CPU) Việc xử lý đaluồ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 bên dưới chỉ ra một phiên bản đaluồng của trình thu thập cơ bản:

Ảnh 2.3: Một mô hình trình thu thập đa luồng

Ngày đăng: 20/04/2017, 22:25

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[5] World Wide Web Consortium (W3C), http://www.w3.org Link
[6] Robot Exclusion Protocol, http://www.vietseo.net/indexability/googlebot-va-robotstxt/ Link
[7] Web crawler ebook - http://www.ecomstor.com [8] Search engine marketing, Stoney deGeyter, 10/2008 [9] http://codeproject.com Link
[1] Gautam Pant, Padmini Srinivasan, Filippo Menczer. Crawling the Web. Web Dynamics 2004, pp 153-178 Khác
[2] Sriram Raghavan, Hector Garcia-Molina. Crawling the Hidden Web.Computer Science Department, Stanford University, USA 2001 Khác
[3] Soumen Chakrabarti. Mining the Web: Discovering knowledge from hypertext data. Elsevier Science, Morgan Kaufmann Publishers 2003 Khác

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w