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

Báo cáo xây dựng một Web Crawler

18 1,4K 13
Tài liệu đã được kiểm tra trùng lặp

Đ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 18
Dung lượng 895,2 KB

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

Nội dung

1 Nutch = Crawler + Indexer/Searcher Lucene + GUI/Plugins/MapRedce/Distribited File System Hadoop Một số ưu điểm chính của Nutch: • Tính trong suốt: Các máy tìm kiếm trên thị trường khôn

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

──────── * ───────

BÁO CÁO PROJECT I

Đề tài : Xây dựng một Crawler

Sinh viên thực hiện : Bùi Văn Toàn Lớp : CNTT2 – K54

Giảng viên hướng dẫn : Trần Đức Khánh

Hà Nội, tháng 12 năm 2011

Trang 2

LỜI NÓI ĐẦU

Mục tiêu của báo cáo:

- Nhằm củng cố, bổ sung, tăng cường kiến thức, kĩ năng xây dựng và phát triển

- Tổng kết những vấn đề đã thực hiện được và chưa thực hiện được để tiến hành rút ra những kinh nghiệm

Em xin gửi lời cảm ơn tới thầy Trần Đức Khánh vì đã tạo rất nhiều điều kiện thuận lợi trong học phần ProjectI này !

Trang 3

MỤC LỤC

Lời mở đầu:

Phần I : Cơ Sở Lý Thuyết……… …4 Chương III : Cài đặt công cụ tìm kiếm theo lĩnh vực chuyên sâu

3.1 Phương hướng cài đặt hệ thống tìm kiếm ……… 4

3.2 Kiến trúc của Nutch……… 5

3.3 Hoạt động của Nutch crawler……… … 6

Phần II: Cài Đặt Một WebCrawler

2.1 Yêu cầu bài toán ……… 14 2.2 Chi tiết cài đặt……….14 Kết luận :

Trang 4

Phần I : CƠ SỞ LÝ THUYẾT

Chương III

CÀI ĐẶT THỬ NGHIỆM CÔNG CỤ THU THẬP THÔNG TIN THEO LĨNH VỰC CHUYÊN SÂU

3.1 Phương hướng cài đặt hệ thống tìm kiếm thông tin theo lĩnh vực chuyên sâu

Để thực hiện cài đặt hệ thống tìm kiếm thông tin theo lĩnh vực chuyên sâu như ý tưởng đã trình bày trong chương II, nhóm SE2010 chúng tôi đã lựa chọn Nutch Bởi Nutch là thư viện mã nguồn mở trên nền Java do Apache Foundation phát triển nhằm đơn giản hóa việc xây dựng một máy tìm kiếm

Sử dụng Nutch Người dùng có thể tạo ra một máy tìm kiếm cho riêng mình với đầy đủ các thành phần: Thu thập tài liệu, đánh chỉ mục, tìm kiếm dựa trên câu truy vấn, giao diện người dùng.

Nutch phát triển dựa trên hai bộ thư viện mã nguồn mở nổi tiếng của Apache là Lucene và Hadoop (1)

Nutch = Crawler + Indexer/Searcher (Lucene) + GUI/Plugins/MapRedce/Distribited File System (Hadoop)

Một số ưu điểm chính của Nutch:

Tính trong suốt: Các máy tìm kiếm trên thị trường không tiết lộ với người dùng về giải thuật được xây dựng bên trong đặc biệt là giải thuật Ranking các trang kết quả Với Nutch, người dùng không chỉ có thể xem các giải thuật mà còn có thể can thiệp hoặc viết lại các giải thuật đó.

1

Trang 5

Tính mở: Bằng việc chỉnh sửa giải thuật được cài đặt, Nutch có thể trở thành một máy tìm kiếm theo chủ đề.

Tính tận dụng: Như mọi hệ thống mã nguồn mở khác, sử dụng Nutch là việc kế thừa thành quả lao động của cộng đồng giúp tiết kiệm thời gian

và công sức phát triển.

Tích hợp: Nhiều công nghệ tiến tiến liên quan đến xử lý văn bản và có thể xử lý dữ liệu lớn (scalability) đã được tích hợp trong Nutch.

3.2 Kiến trúc của Nutch

Kiến trúc của Nutch Error: Reference source not found được minh họa bởi hình 3.1 Hệ thống Nutch sử dụng một kho dữ liệu về các trang web (web db) để lưu trữ địa chỉ tất cả các trang web đã biết và các link nằm trong các trang đó Web db cung cấp địa chỉ các trang sẽ được lấy về cho bộ download dưới dạng một danh sách địa chỉ (fetch list) Bộ download (fetcher) gồm nhiều thành phần hoạt động song song có thể download đồng thời nội dung của nhiều trang nhằm tận dụng băng thông Dữ liệu lấy về được cập nhật vào trong web db để phục vụ cho việc tạo ra các fetch list tiếp theo.

Sau khi hoàn thành quá trình lấy dữ liệu từ Internet, bộ đánh chỉ mục (Indexer) tiến hành đánh chỉ mục và sắp xếp Giao diện người dùng trên các máy chủ web (web server) đưa câu truy vấn vào bộ tìm kiếm (searcher) để tìm kiếm trên dữ liệu đã đánh chỉ mục và trả lại kết quả cho người dùng (2)

2

Trang 6

Hình 3.: Kiến trúc một máy tìm kiếm dựa trên Nutch.

Theo kiến trúc này thì Crawler, Indexer, Searcher hoạt động độc lập và chỉ phụ thuộc về mặt dữ liệu Điều này cho phép chúng ta thay đổi cách thức hoạt động của từng thành phần mà không ảnh hưởng tới thành phần khác (3)

3.3 Hoạt động của Nutch crawler

Crawler hoạt động theo từng chu kỳ, tổng số chu kỳ gọi là độ sâu (depth) trong một lần thu thập thông tin Mỗi chu kỳ sẽ có tối đa N tài liệu được lấy

về Theo cấu hình của Nutch thì

18

10 2 9

0 < N < . ×

Crawler hoạt động qua 5 bước và được minh họa bởi Hình 3 (4) :

1: Ịnject: Bắt đầu với một số trang hạt giống được "tiêm" vào cơ sở dữ liệu link (CrawlerBD);

2: Generate: Lấy ra các link cần duyệt từ CrawlDB và cho vào hàng đợi (Fetch list);

3: Fetch: Lấy về nội dung của các trang trong fetch list;

3

4

Trang 7

4: Parse: Đọc nội dung đã được lấy về để trích rút ra các link mới và nội dung các link dưới dạng text đơn thuần;

5: Update: Cập nhật CrawlerDB với các link đã được trích rút ở bước 4.

Bước 2 đến bước 5 được lặp lại cho đến khi đạt được độ sâu cần thiết hoặc số lượng tài liệu theo ý.

Hình 3.: Sơ đồ hoạt động của crawler.

3.3.1 Cấu trúc thư mục làm việc của Nutch

Một phiên làm việc của Nutch được lưu trữ dưới dạng cây thư mục (Hình 3.) Trong đó:

a CrawlerDB

CrawlerDB là cơ sở dữ liệu về các trang đã biết và đã được duyệt Crawler lưu trữ thông tin về từng trang như: trạng thái, thời gian của lần duyệt cuối cùng, lấy về có thành công không, khoảng thời gian giữa hai lần duyệt, mã hóa nội dung của trang, CrawlerDB được tổ chức dưới dạng map file gồm các bản ghi có trường

um CrawlerDat ,

URL

, URL sử dụng kiểu dữ

Trang 8

liệu text của Hadoop để lưu trữ địa chỉ của trang CrawlerDat um là một lớp của Nutch để lưu trữ trạng thái của một trang gồm có các thông tin ở trên.

CrawlerDB được khởi tạo bởi Ịnjector Ịnector đơn giản chỉ chuyển một tệp văn bản chứa các trang hạt giống (seed URL) sang dạng map file

Crawler

,

URL

Trong quá trình thu thập tài liệu, Crawler được cập nhật sau mỗi chu kỳ bằng các địa chỉ đã được lấy về và các địa chỉ mới được trích rút ra.

Hình 3.: Cấu trúc thư mục làm việc của Nutch Crawler.

b LinkDB

LinkDB lưu trữ thông tin về đồ thị link sau khi một phiên làm việc kết thúc LinkDB được tổ chức dưới dạng map file

Inlinks ,

URL

trong đó Inlinks

là một lớp của Nutch chứa danh sách các địa chỉ và anchor text trỏ tới URL

LinkDB không có sẵn mà được tạo ra bằng cách sử dụng mô hình MapReduce của Hadoop LinkDB rất có ích trong việc huấn luyện cho crawler hoặc tính độ quan trọng của một trang tài liệu (page ranking).

Trang 9

c Segments

Mỗi segment lưu trữ dữ liệu của một chu kỳ Mỗi segment sẽ được lưu trữ vào trong một thư mục có tên được ghi theo dạng năm-tháng-ngày-giờ-phút-giây Chẳng hạn, một chu kỳ bắt đầu làm việc vào lúc 11 giờ 20 ngày 10 tháng 5 năm 2010, khi đó dữ liệu của chu kỳ này sẽ được chứa trong một thư mục có tên: 20100510112036 Mỗi segment chịu trách nhiệm thu thập một tập các trang và trích rút ra các thông tin cần thiết Segment được tổ chức với các thư mục con như sau:

Content:

Chứa dạng dữ liệu gốc (raw) của các trang được lấy về, được tổ chức dưới dạng map file

Content ,

URL

Content là một lớp của Nutch chứa thông tin dưới dạng gốc của một trang.

Crawl_generate:

Chứa danh sách địa chỉ các trang được lấy về trong chu kỳ làm việc này Danh sách được lấy ra từ crawlerDB bởi Generator và được tổ chức dưới dạng file tuần tự

CrawlDatum ,

URL

.

Crawler_fetch:

Chứa thông tin về các địa chỉ trong crawl _ generate sau khi lấy về, được lưu trữ dưới dạng map file

CrawlDatum ,

URL

Danh sách URL trong crawl _ fetch giống như trong crawl _ generate chỉ có CrawlDatum được cập nhật các thông tin về việc download có thành

Trang 10

công hay không, thời gian download, Thông tin trong crawl_fetch chính là thông tin dùng để cập nhật cho CrawlDB sau mỗi chu kỳ.

Crawl_parse:

Được tổ chức dưới dạng file tuần tự

CrawlDatum ,

URL

, là các địa chỉ mới được lấy ra sau quá trình trích rút các trang mới được lấy về Thông tin về các trang mới này được bổ sung vào cho CrawlDB để mở rộng cơ sở dữ liệu link phục vụ cho các chu kỳ hoạt động sau.

Parse_date:

Lưu trữ dạng map file

ParseData ,

URL

ParseDate là một lớp của Nutch lữu trữ thông tin ( URL , anchor text ) về các out-link xuất phát từ

URL Các out-link này đồng thời được lưu trữ trong crawl _ parse Anchor text của các out-link là cơ sở để "nhìn trước" tiềm năng trong quá trình thu thập thông tin.

Parse_text:

Các trang khi đã được tải về và cắt bỏ hết thông tin thừa chỉ còn lại là dạng văn bản Lưu trữ dạng map file

ParseText ,

URL

, trong đó ParseText

chứa dạng văn bản của URL.

d Index và Indexes

Trang 11

Hai thư mục này sinh ra sau khi quá trình đánh chỉ mục được thực hiện Hai thư mục này chứa các chỉ mục trỏ tới dữ liệu trong các segment cụ thể.

3.3.2 Phiên làm việc của Nutch Crawler

Hình 3.: Phiên làm việc của Nutch Crawler

Phiên làm việc của Nutch Crawler (Hình 3.), Error: Reference source not found: Đầu tiên, Injector khởi tạo một danh sách trang hạt giống vào CrawDB Sau đó, mỗi chu kỳ tạo một thư mục dành riêng cho segment và đều lặp lại các bước sau:

1: Generator sử dụng CrawlDB để lấy ra N địa chỉ có đủ điều kiện (chưa download lần nào hoặc download lần cuối vượt quá khoảng thời gian giữa hai lần download định trước, ) Những địa chỉ này được chuyển vào thư mục con crawl _ generate và chờ để được download.

2: Fetcher là bộ có chức năng download một cách song song đa luồng nhiều địa chỉ cùng lúc Có nhiều fetcher cùng hoạt động Mỗi fetcher chịu trách nhiệm download một địa chỉ tại một thời điểm Các fetcher được cấp phát

Trang 12

địa chỉ bởi queue feeder, một lớp của Nutch có nhiệm vụ kiểm soát tốc độ download, số fetcher hoạt động trên một máy chủ đề tránh vô tình làm sập máy chủ.

Nội dung gốc của các trang lấy về được lưu trữ trong thư mục content Ngoài ra, tình trạng của các địa chỉ được lấy về có thành công hay không được cập nhật và ghi lại vào thư mục crawl _ fectch

3: Parse lấy nội dung gốc của từng trang và phân tích để trích rút ra định dạng văn bản của trang đó, các địa chỉ mới Định dạng văn bản của từng trang được lưu trữ tại parse _ text Các địa chỉ mới được lưu trữ trong

parse

_

crawl

Cấu trúc out-link được lưu trữ tại parse _ data

4: Updater sử dụng crawl _ parse cập nhật thông tin về các trang được download và bổ sung địa chỉ mới vào CrawlDB, CrawlDB mới sẽ phục vụ cho việc tạo ra danh sách địa chỉ cần download cho một segment mới.

Kết thúc quá trình thu tập thông tin, parse _ data của từng segment được sử dụng để tạo ra đồ thị link của toàn bộ các trang đã biết Tiếp theo, tất cả các segment cung cấp thông tin cho quá trình đánh chỉ mục.

3.3.3 Phiên làm việc của Nutch Crawler có ứng dụng học tăng cường

Tương tự như phiên làm việc của Nutch crawler như đã trình bày ở

trên, nhưng ngay sau quá trình parse thì dữ liệu của parse _ data và

text

_

parse

sẽ được đưa vào khối tiền xử lý của modul tách từ tiếng Việt (tách câu) Đầu ra của modul tách từ tiếng Việt sẽ được đưa vào khối tiền xử lý của

Trang 13

modul phân loại văn bản bằng SVM Rồi thực hiện tính độ quan trọng của tài liệu và anchor text Kết quả tính toán này sẽ được đẩy vào modul điều khiển.

Nếu độ quan trọng của tài liệu và anchor text được quan tâm (đúng chủ đề) thì cho phép thực hiện các bước: Fetcher; Parse và Updater như đã biết với phiên làm việc của Nutch Crawler.

Nếu độ quan trọng của tài liệu và anchor text không đáng được quan tâm (khác chủ đề) thì bỏ qua Rồi tiếp tục vòng lặp khác.

Phiên làm việc này được minh họa trên Hình 3

Seed urls CrawlDb

Generator Segment N

Crawl_generate

Trang 14

Crawl_fetch Content Crawl_parse Parse_data Parse_text Fetcher Parse segment Updater LinkDb LinkDb invertlinks

Injector

VnTokenizer

SVM

Indexer Lucene index

1 6 2 3

Đúng chủ đề

Đ

Tính độ quan trọng của tài liệu và anchor text

Trang 15

Bỏ qua

S 4 5

Hình 3.: Phiên làm việc của Nutch Crawler có ứng dụng học tăng cường

Phần II : CÀI ĐẶT MỘT WEBCRAWLER

2.1 Yêu cầu bài toán :

Xây dựng Crawler hay còn gọi là bộ thu thập thông tin Nó là một trong 3 thành phần chính tạo nên bộ tìm kiếm : Crawler, Indexer và Searcher

2.2 Chi tiết cài đặt :

Thuật toán :

Đầu vào của người dùng : URL bắt đầu vào mong muốn

loại tập tin Thêm URL vào danh sách URL để tìm kiếm.

{

Di chuyển URL vào danh sách các URL đã được tìm kiếm Kiểm tra URL để đảm bảo giao thức của nó là HTTP

(if not, thoát ra khỏi vòng lặp , trở lại "while ").

dù có một tập tin robots.txt tại trang web này

bao gồm một tuyên bố " Không cho phép" (if có, thoát ra khỏi vòng lặp , trở lại "while ".)

if nó không phải là một tập tin HTML , thoát ra khỏi vòng lặp ,

Trang 16

trở lại " while." Bước qua các tập tin HTML

{

Xác nhận URL của liên kết và làm cho robot chắc chắn là

danh sách hoặc danh sách đã tìm kiếm , thêm nó vào

Khác nếu đó là loại tập tin người dùng yêu cầu,

}

}

Chương trình chính : Về cơ bản giao diện của chương trình WebCrawler

Mô tả :

Trang 17

- StartURL : Là seedURL phải có giao thức “http://’’

- Search limit : Giới hạn của các link đã được thăm

- Frontier : Các URL biên tức là tất cả các link lấy ra từ trang web đã và đang được thăm

- Visited URLs : Những trang URL đã được thăm và đã trích rút ra các link liên kết

- Các chức năng : Search , Stop , Clear( Clear Panel : Frontier , Visted URLs), Exit

Đầu vào : Là 1 URL phải có giao thức là “ http:// ”

Đầu ra sẽ : Là các link liên kiết phục vụ cho công đoạn Indexer và Searcher

Đánh giá :

- Chương trình cơ bản đáp ứng được yêu cầu của một WebCrawler

- Khi nhập vào 1 URL chương trình sẽ tìm tất cả các Link liên kết trong trang

đó và tiếp tục vòng lặp đến khi đáp ứng điều kiện đặt ra

Linh hoạt trong kiểm soát số lượng các link cần được viếng thăm ( có giới hạn các link kết quả tìm kiếm )

Trang 18

KẾT LUẬN

Chương trình là sự nỗ lực rất nhiều của cá nhân em

Trong thời gian tìm hiểu có hạn nên không tránh khỏi những thiếu sót , rất mong được sự đóng góp của thầy giáo để chương trình được hoàn thiện hơn

Em xin chân thành cám ơn !

Ngày đăng: 21/06/2014, 16:24

HÌNH ẢNH LIÊN QUAN

Hình 3.: Kiến trúc một máy tìm kiếm dựa trên Nutch. - Báo cáo xây dựng một Web Crawler
Hình 3. Kiến trúc một máy tìm kiếm dựa trên Nutch (Trang 6)
Hình 3.: Sơ đồ hoạt động của crawler. - Báo cáo xây dựng một Web Crawler
Hình 3. Sơ đồ hoạt động của crawler (Trang 7)
Hình 3.: Cấu trúc thư mục làm việc của Nutch Crawler. - Báo cáo xây dựng một Web Crawler
Hình 3. Cấu trúc thư mục làm việc của Nutch Crawler (Trang 8)
Hình 3.: Phiên làm việc của Nutch Crawler. - Báo cáo xây dựng một Web Crawler
Hình 3. Phiên làm việc của Nutch Crawler (Trang 11)
Hình   3.:  Phiên  làm   việc   của   Nutch   Crawler   có   ứng   dụng   học   tăng   cường - Báo cáo xây dựng một Web Crawler
nh 3.: Phiên làm việc của Nutch Crawler có ứng dụng học tăng cường (Trang 15)

TỪ KHÓA LIÊN QUAN

w