Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 18 trang
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
Nội dung
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ÁOCÁO PROJECT I Đề tài : XâydựngmộtCrawler 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 1 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âydự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 ! 2 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 : 3 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âydựngmộ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âydự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 4 • 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ụngmộ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 5 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 crawlerCrawler 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 10290 ×<< .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 6 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 umCrawlerDat,URL , URL sử dụng kiểu dữ 7 liệu text của Hadoop để lưu trữ địa chỉ của trang. umCrawlerDat 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). 8 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 generate_crawl sau khi lấy về, được lưu trữ dưới dạng map file CrawlDatum,URL . Danh sách URL trong fetch_crawl giống như trong generate_crawl chỉ có CrawlDatum được cập nhật các thông tin về việc download có thành 9 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 ( text anchor ,URL ) 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 parse_crawl . 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 10 [...]... Đ Tính độ quan trọng của tài liệu và anchor text 14 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... 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".) thử "mở" URL (có nghĩa là lấy tài liệu từ Web) if nó không phải là một tập tin HTML, thoát ra khỏi vòng lặp, 15 trở lại "while." Bước qua các tập tin HTML While( các văn bản HTML chứa một liên kết khác) { Xác nhận URL của liên kết... 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... để đượ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 11 đị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... 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... chắc chắn là cho phép (chỉ trong vòng lặp bên ngoài) if nó là một file HTML, if URL không có mặt trong tìm kiếm hoặc danh sách hoặc danh sách đã tìm kiếm, thêm nó vào danh sách tìm kiếm Khác nếu đó là loại tập tin người dùngyêu cầu, Thêm vào danh sách các tập tin tìm thấy } } Chương trình chính : Về cơ bản giao diện của chương trình WebCrawler Mô tả : 16 - StartURL : Là seedURL phải có giao thức “http://’’... 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... đượ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