1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

55 1,3K 11

Đ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 55
Dung lượng 2 MB

Nội dung

Web Crawler sẽ tìm kiếm tất cả các liên kếtURL có trong trang Web đó và thêm vào danh sách ví dụ như trongtrang đó có liên kết tới các lĩnh vực việc làm như sau: Lúc này Frontier đã có đ

Trang 1

BAN CƠ YẾU CHÍNH PHỦ

Mã số: 52.48.02.01

Hà Nội, 2016

Trang 2

BAN CƠ YẾU CHÍNH PHỦ

Mã số: 52.48.02.01

Sinh viên thực hiện:

Nguyễn Hữu Quyền

Trang 4

MỤC LỤC

Danh mục kí hiệu và viết tắt iii

Danh mục hình vẽ iv

Lời nói đầu v

Chương 1 Tổng quan về thu thập dữ liệu tự động 1

1.1 Các khái niệm về thu thập dữ liệu tự động 1

1.1.1 Trình thu thập Web tự động – Web Crawler 1

1.1.2 Hạt giống – Seeds và Giới hạn thu thập – Frontier 1

1.1.3 Sơ đồ hoạt động của Web Crawler 2

1.1.4 Xử lý dữ liệu đúng cách sau khi thu thập 3

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 3

1.2.1 Khái niệm HTML 3

1.2.2 Công cụ Inspect Element trên trình duyệt 4

1.3 Cấu trúc trang thông tin điện tử 6

1.3.1 Sơ đồ cấu trúc trang thông tin điện tử 6

1.3.2 Giao diện của trang thông tin điện tử 8

Chương 2 Các phương pháp trong việc thu thập dữ liệu tự động 12

2.1 Mô hình hệ thống thu thập dữ liệu 12

2.2 Các tính năng của một trình thu thập dữ liệu 13

2.3 Các chính sách trình thu thập dữ liệu cần tuân thủ 13

2.4 Các chiến lược thu thập dữ liệu 14

2.4.1 Chiến lược thu thập theo chiều sâu – Depth-First Search 14

2.4.2 Chiến lược thu thập theo chiều rộng – Breadth-First Search 15 2.4.3 Chiến lược thu thập theo tính ngẫu nhiên – Random-First Search 16

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 16

2.5 Các kỹ thuật thu thập dữ liệu 17

2.5.1 Thu thập dữ liệu tập trung – Focused Crawler 18

2.5.2 Thu thập dữ liệu phân tán – Distributed Crawler 20

2.5.3 Thu thập dữ liệu tăng tiến – Incremental Crawler 21

2.5.4 Thu thập dữ liệu Web ẩn 21

2.5.5 Tính riêng tư của dữ liệu khi thu thập 22

2.6 Đánh giá trình thu thập dữ liệu 22

2.6.1 Độ quan trọng của trang Web 23

2.6.2 Phân tích tổng quát 24

2.7 Thu thập dữ liệu đa luồng 25

2.8 Thư viện SIMPLE_HTML_DOM và cURL 26

2.8.1 Khái niệm HTML DOM 26

2.8.2 Khái niệm SIMPLE_HTML_DOM 27

2.8.3 Khái niệm cURL 28

Trang 5

Chương 3 Xây dựng ứng dụng thu thập dữ liệu việc làm 30

3.1 Mô tả ứng dụng thu thập dữ liệu việc làm 30

3.1.1 Các thành phần của ứng dụng thu thập dữ liệu việc làm 30

3.1.2 Cơ sở dữ liệu của ứng dụng thu thập dữ liệu việc làm 33

3.1.3 Giao diện ứng dụng thu thập dữ liệu việc làm 35

3.1.4 Cách thiết lập thông số ban đầu cho ứng dụng thu thập dữ liệu việc làm 37

3.2 Đánh giá kết quả thu thập được của ứng dụng thu thập việc làm 39

3.3 Đánh giá ưu nhược điểm của ứng dụng thu thập việc làm 40

3.3.1 Ưu điểm 40

3.3.2 Nhược điểm 40

3.4 Hướng phát triển của ứng dụng thu thập dữ liệu việc làm 41

Kết luận 43

Tài liệu tham khảo 44

Phụ lục 46

Trang 6

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

Trang 7

DANH MỤC HÌNH VẼ

Hình 1.1 Sơ đồ hoạt động của một Web Crawler đơn giản 3

Hình 1.2 Công cụ Inspect Element trên trình duyệt 5

Hình 1.3 Tab Network của công cụ Inspect Element 6

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

Hình 1.5 2 mẫu Header của trang thông tin việc làm 8

Hình 1.6 2 mẫu Footer của trang thông tin việc làm 9

Hình 1.7 Website ‘http://www.vietnamworks.com/’ 9

Hình 1.8 Danh sách việc làm trên Website ‘http://www.vietnamworks.com/’ 10

Hình 1.9 Chi tiết việc làm trên Website ‘http://www.vietnamworks.com/’ 10

Hình 2.1 Mô hình hệ thống thu thập dữ liệu 12

Hình 2.2 Thứ tự các trang được duyệt Depth-First Search 15

Hình 2.3 Thứ tự các trang được duyệt Breadth-First Search 16

Hình 2.4 Trình thu thập dữ liệu tiêu chuẩn 19

Hình 2.5 Trình thu thập dữ liệu tập trung 19

Hình 2.6 Sơ đồ thu thập dữ liệu tập trung 20

Hình 2.7 Sơ đồ thu thập dữ liệu tăng tiến 21

Hình 2.8 Độ hoàn hảo và độ chính xác 24

Hình 2.9 Mô hình thu thập dữ liệu đa luồng 26

Hình 2.10 Một cây HTML DOM đơn giản 27

Hình 3.1 Cây cấu trúc dữ liệu trang tuyển dụng việc làm 31

Hình 3.2 Sơ đồ thuật toán tối giản hóa của ứng dụng thu thập dữ liệu việc làm 32

Hình 3.3 Cấu trúc bảng tbldata 34

Hình 3.4 Cấu trúc bảng tblconfig 35

Hình 3.5 Mục ‘Configuration’ của ứng dụng thu thập dữ liệu việc làm 35

Hình 3.6 Danh sách lĩnh vực tuyển dụng muốn tra cứu 36

Hình 3.7 Danh sách việc làm đã thu thập 36

Hình 3.8 Chức năng xem chi tiết nội dung tuyển dụng 37

Hình 3.9 3 bước hoạt động của ứng dụng thu thập dữ liệu việc làm 37

Hình 3.10 Sử dụng công cụ Inspect Element để lấy thẻ HTML 38

Hình 3.11 Sử dụng công cụ Inspect Element để lấy biến session 38

Hình 3.12 Frontier chứa danh sách lĩnh vực tuyển dụng theo 2 cách thu thập 39

Trang 8

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 nhucầ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ìmkiế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 (searchengine), 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ôngtin 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ứclự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ặthà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âydựng các trang Web thông tin tổng hợp, nhu cầu thu thập thông tin về các doanhnghiệp thuộc một ngành nào đó trên Website danh bạ doanh nghiệp để gửi emailquả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ấtcao 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ộtphươ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ênWeb 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ácthầy cô, cũng như các bạn học viên để đồ án này được hoàn thiện hơn

Trang 9

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óilượng thông tin mà mạng Internet mang lại là rất lớn và xu hướng hiện nay mọingười thường theo dõi các thông tin trên mạng Internet là chính Xu hướng đó pháttriể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áchnhanh 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à WebCrawler 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 địnhtrướ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áctrang 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 trangkhá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ưutrữ Web Crawler cũng tương tự như vậy, tuy nhiên việc thu thập diễn ra nhanhhơn, lượng thông tin thu thập được cũng nhiều hơn và quan trọng nhất Và quantrọng nhất, khi sử dụng Web Crawler, con người tiết kiệm được khoảng thời gianphả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 Crawlerkhô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ìnhduyệ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 URLnà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ả

Trang 10

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 ‘http://www.vietnamworks.com/’ 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ư trongtrang đó có liên kết tới các lĩnh vực việc làm 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ừ danhsá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ácthô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 theocá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

Trang 11

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ầnlấ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à ‘http://www.timviec.com/xaydung’, mục

‘Marketing’ có liên kết là ‘http://www.timviec.com/marketing’ Những thông tinnà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 tinquả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ôngnằ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ảngcá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ụ choviệc quảng cáo, ví dụ như những quảng cáo về game sẽ hướng đến giới trẻ, nhữngngườ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ếnthứ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ônngữ đá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

Trang 12

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óiriêng

HTML có thẻ mở và thẻ đóng với cú pháp: <tagname></tagname> Ngoài ramỗ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ằmbê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:

• <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ụngthu 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

Trang 13

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ộtkhung 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ểnthị trên trang Web, như trên hình, ta có thể thấy được thẻ định dạng dữ liệu củatiêu đề bài viết tuyển dụng

<a href="http://www.vietnamworks.com/production-manager-166-674040-jd" 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ẻ địnhdạ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à ‘http://www.vietnamworks.com/production-manager-166-674040-jd’ Đâ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 thuthập

Phần Network của công cụ Inspect Elements giúp ta đánh giá được tốc độ tảitrang 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úptăng tốc độ thu thập Web Ngoài ra khi sử dụng ứng dụng thu thập thông tin việclàm, nó cũng giúp ta tính được tổng thời gian thực thi của ứng dụng

Trang 14

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ấttrong 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 Bugtrê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ântí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ử

Trang 15

Nút trên cùng là trang chủ, đây thường sẽ là trang đầu tiên hiển thị khiWebsite được truy cập theo URL gốc Trang chủ là nơi liệt kê các liên kết đến cáctrang 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ặtgiao diện để tạo cho người truy cập có ấn tượng ban đầu rằng đây là một Websitetố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ớichú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ầungay 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ôngtin 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àythường hướng dẫn họ làm gì, làm như thế nào Trang này khá quan trọng và giúptiế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ắcmắc

• Trang danh mục sẽ chứa các nội dung chính của Website và đó cũng là nộidung 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ănhó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ựctươ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ựcchẳ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ệclà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ứclương…

Trang 16

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 trangWeb 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 trangWeb ít đầu tư vào giao diện, khó sử dụng và tốc độ chậm Giao diện thường thấycủ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 Websitehiệ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ếttới các trang đăng ký, đăng nhập Ngoài ra tại đây thường có danh sách các danhmụ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ácWebsite hỗ trợ nhiều ngôn ngữ chẳng hạn Phần đầu trang thường không thay đổinộ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 đổinội dung trên cả Website Phần cuối trang thường chứa các liên kết đến các trangthuộ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…

Trang 17

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ònlạ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ủatrang 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 ảnhlớ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ênlạ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ôngtin 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à ‘http://www.vietnamworks.com/’

Hình 1.7: Website ‘http://www.vietnamworks.com/’

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ộidung (content) – số 2 Việc thu thập dữ liệu tự động sẽ chỉ tập trung vào phần nội

Trang 18

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ầncontent sẽ thay đổi còn phần header hầu như luôn được giữ nguyên Như hình trênthì đâ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ácthô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ĩnhvự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ầnnộ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 ‘http://www.vietnamworks.com/’

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 ‘http://www.vietnamworks.com/’

Trang 19

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ầnquan tâm đến một trang nữa đó là trang đăng nhập, ví dụ ở trang Web

‘http://www.vietnamworks.com/’ thì ta cần đăng nhập để xem được mức lương củamỗ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

Trang 20

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 thuthập dữ liệu tự động Trong đó bao gồm mô hình hệ thống, các tính năng, chínhsá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 thuthậ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 Frontierhoặ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ậpFrontier, 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ẽ

Trang 21

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 thuthậ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áctrang 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) thuthậ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 trangWeb 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ảicá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ànhthu 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ó khihoạ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áctrang Web đích bị quá tải

Trang 22

• Một chính sách song song (parallelization) để chỉ ra làm cách nào để phốihợ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ệubao 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 thuthậ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ằngcá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ấutrú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 quaylạ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ệutheo chiều sâu áp dụng trên một cây đồ thị:

Trang 23

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ếmbằ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àngnhiề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ựchiệ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 theochiều rộng áp dụng trên một cây đồ thị:

Trang 24

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 theochiề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êntrướ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àngchờ)

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ìmkiế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ìnhthự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ụngthuậ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 (cosinesimilarity) 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áchtìm cosin góc giữa chúng, phương pháp độ tương đồng cosin thường được dùng để

Trang 25

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 (termfrequency) 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 qtrong 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;

} }

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:

Trang 26

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 thuthập dữ liệu tiêu chuẩn lúc đó là một công nghệ mạnh mẽ để thu thập các trangWeb, 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ênquan nhất với chủ đề mong muốn Khái niệm thu thập dữ liệu tập trung được giớithiệu lần đầu tiên bởi Chakrabarti, Berg và Dom vào năm 1999 đã chỉ ra các thuthậ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àinguyê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ốnhay 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ộtvà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ầnphân loại và chắt lọc Chakrabarti, Berg và Dom đã cố gắng áp dụng các biện phápkhá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ácliê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ượcthu 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ậptiêu chuẩn hoạt động

Trang 27

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ìnhthu 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 SeedURL, 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ấythông tin ví dụ như các điều kiện (terms), các liên kết ở trang đã tải về Bộ phậntính toán mức độ liên quan (Relevance Calculation) sẽ tính toán mức độ liên quangiữ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 URLthu được từ trang đó Bộ phận lọc (Topic filter) sẽ phân tích xem nội dung củatrang đó có liên quan đến chủ đề hay không Nếu trang đó có liên quan, cácliên kết URL thu được từ trang đó sẽ được thêm vào hàng chờ, còn nếu khôngchúng sẽ được thêm vào phần nền ít liên quan (Irrelevant Matrix)[5]

Ngày đăng: 21/09/2016, 23:35

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Đỗ Thị Diệu Ngọc, “TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU WEB”, K44 Đại học Công nghệ ĐHQGHNhttp://uet.vnu.edu.vn/~thuyhq/Student_Thesis/K44_Do_Thi_Dieu_Ngoc_Thesis.pdf Sách, tạp chí
Tiêu đề: TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU WEB
[2] “Dùng PHP Crawler Để Lấy Dữ Liệu Tự Động Từ Một Website”, 7/2015 http://phpcoban.com/demo-dung-php-crawler-de-lay-du-lieu-tu-dong-tu-mot-website/Tiếng Anh Sách, tạp chí
Tiêu đề: Dùng PHP Crawler Để Lấy Dữ Liệu Tự Động Từ Một Website
[3] Marc Najork, “Web Crawler Architecture”, 2010.http://research.microsoft.com/pubs/102936/eds-webcrawlerarchitecture.pdf Sách, tạp chí
Tiêu đề: Web Crawler Architecture
[4] Trupti V. Udapure, Ravindra D. Kale, Rajesh C. Dharmik, “Study of Web Crawler and its Different Types”, Feb 2014.http://www.iosrjournals.org/iosr-jce/papers/Vol16-issue1/Version-6/A016160105.pdf Sách, tạp chí
Tiêu đề: Study of WebCrawler and its Different Types
[5] Raja Iswary, Keshab Nath, “WEB CRAWLER”, October 2013.http://www.ijarcce.com/upload/2013/october/50-o-Keshab_Nath_-web_crawler.pdf Sách, tạp chí
Tiêu đề: WEB CRAWLER
[6] Wikipedia, “Web crawler”.https://en.wikipedia.org/wiki/Web_crawler Sách, tạp chí
Tiêu đề: Web crawler
[7] S.C. Chen, “PHP Simple HTML DOM Parser Manual”.http://simplehtmldom.sourceforge.net/manual.htm Sách, tạp chí
Tiêu đề: PHP Simple HTML DOM Parser Manual
[8] Pavalam S M, S V Kashmir Raja, Felix K Akorli, Jawahar M, “A Survey of Web Crawler Algorithms”, November 2011.http://ijcsi.org/papers/IJCSI-8-6-1-309-313.pdf Sách, tạp chí
Tiêu đề: A Survey ofWeb Crawler Algorithms
[9] Ayoub Mohamed H. Elyasir, Kalaiarasi Sonai Muthu Anbananthen, “Focused Web Crawler”, 2012 Sách, tạp chí
Tiêu đề: FocusedWeb Crawler
[10] Manpreet Kaur, Yasmeen Kaur Dhaliwal, “Focused Crawler: A Review”, May 2014 Sách, tạp chí
Tiêu đề: Focused Crawler: A Review
[11] Chen Ding, “Network and Parallel Computing: IFIP International Conference NPC 2010. p. 91”, 2010 Sách, tạp chí
Tiêu đề: Network and Parallel Computing: IFIP International ConferenceNPC 2010. p. 91
[12] Aviral Nigam, “Web Crawling Algorithms”, September 2014 Sách, tạp chí
Tiêu đề: Web Crawling Algorithms

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w