CHƯƠNG 1: TỔNG QUAN WEB CRAWLER 1. Tổng quan Web Crawler 1.1 Khái niệm và giới thiệu sơ lược về Web Crawler Web Crawler: còn gọi là bọ tìm kiếm là một chương trình tự động tìm kiếm trên Internet. Nó được thiết kết để thu thập tài nguyên Internet (trang Web, hình ảnh, video, tài liệu Word, PDF hay PostScrips), cho phép máy tìm kiếm đánh chỉ số sau đó. Cùng phương th ức, nhưng một số Web Crawler lại bị sử dụng để lượm các tài nguyên hoặc để lọc địa chỉ email.
Để đánh chỉ số các tài nguyên Web, mỗi bọ tìm kiếm (robot) sẽ đi theo các liên kết mà nó tìm thấy tại một trang trung tâm. Sau đó, mỗi trang đã duyệt sẽ được ghi nhớ lại và gán cho tần số đánh lại chỉ số dựa vào mức độ cập nhật thường xuyên hay không của trang. Để điểu chỉnh ứng xử các Web Crawler, một tệp tin ngoại trừ (robots.txt) sẽ được đặt tại thư mục gốc của trang Web để chỉ định cho Web Crawler một danh sách những tài nguyên không được tiếp cận. Tệp tin robots.txt này còn đưa ra danh sách những bọ tìm kiếm nào được quyền đánh chỉ số trang Web.
Qui tắc này cho 11 Tìm hiểu Web Crawler và xây dựng ứng dụng GVHD: Ths Nguyễn Hồ Minh Đức phép giảm tải trên máy chủ và tránh đánh chỉ số những tài liệu không cần thiết hoặc nhạy cảm. Tuy nhiên có nhiều bọ tìm kiếm không tôn trọng chỉ định này, và hoàn toàn bỏ qua tệp tin ngoại trừ (robots. Một số bọ tìm kiếm phổ biến của các máy tìm kiếm : • Googlebot của Google • MSNBot của MSN • Slurp của Yahoo • Scooter của Alta Vista • Baidu của Baidu Web Crawler còn được biết đến với các tên gọi khác nhau: Spider, Robot (hoặc bot), Web agent, Wanderer, Worm,…Những tên gọi này đôi khi gây nhầm lẫn, như từ ‘Spider’, ’Wanderer’ người ta nghĩ rằng Crawler tự nó di chuyển và từ ‘Worm’ làm người ta liên tưởng đến virus.2 Ưu điểm của Web Crawler o Tìm kiếm thông tin đuợc chứa rải rác trên hàng tỷ trang phục vụ bởi hàng triệu máy chủ trên khắp thế giới. Giúp người dùng có thể duyệt web theo các siêu liên kết để truy cập thông tin.
o Một crawler có thể viếng thăm nhiều trang web để lấy thông tin kết nối đến các trang web khác. o Do trang web là một thực thể năng động phát triển với một tốc độ nhanh nên cần cập nhật thông tin liên tục giúp ứng dụng ở hiện tại có thể: thêm, xóa, di chuyển và sửa chữa các trang, các liên kết. o Crawler đuợc sử dụng phổ biến nhất trong sự hỗ trợ của công cụ tiềm kiếm thông qua chỉ số indexes. 12 Tìm hiểu Web Crawler và xây dựng ứng dụng GVHD: Ths Nguyễn Hồ Minh Đức 1.3 Khuyết điểm của Web Crawler o Lấy địa chỉ email của nguời dùng bằng cách spamers.
o Lừa đảo thông tin riêng của nguời dùng, các cuộc trộm cắp danh tính.4 Những ứng dụng của Web Crawler o Trên thế giới những Web Crawler rất nhiều và được ứng dụng vào rất nhiều loại hình website khác nhau như: web tìm kiếm, web rao vặt, web so sánh giá, web tổng hợp tin tức,… o Các công cụ tìm kiếm tốt nhất hiện nay như Google, Yahoo!, Bing và MSN chạy rất hiệu quả trong việc thiết kế crawler để thu thập tất cả các trang không phân biệt nội dung. 13 Tìm hiểu Web Crawler và xây dựng ứng dụng GVHD: Ths Nguyễn Hồ Minh Đức 2. Các bước để thực hiện Web Crawler 2.1 Tìm nạp trang o Trình thu thập đóng vai trò như một web client, nó gửi một yêu cầu HTTP đến máy server và đọc câu trả lời. Các trình thu thập cần phải có timeout các liên kết nhằm tránh việc sử dụng thời gian chờ đợi quá lâu cho câu trả lời từ việc đóng máy server.
o Các vòng lặp sẽ dừng lại nếu phát hiện một URL được lặp lại 2 lần. o Kiểm lỗi và xử lý ngoại lệ là rất quan trọng trong suốt quá trình xử lý nạp trang. o Các ngôn ngữ lập trình như java, Python, Perl cung cấp các giao tiếp cho việc tìm nạp trang web. Nhưng nó khó phát hiện hơn các vấn đề ở cấp thấp.
Ví dụ: Chẳng hạn như một trình thu thập mạnh trong Perl phải sử dụng đơn vị Socket để gửi các request HTTP thay vì thư viện LWP cấp cao (the World-Wide Web library for Perl).1 Các bước tách lọc o Lập chỉ mục các trang nếu như trình thu thập hỗ trợ công cụ tìm kiếm. o Lấy ra các link thêm vào Frontier. o Parsing là sự chiết xuất các URL đơn giản từ các siêu liên kết bằng sự phân tích mã HTML. o DOM (Document Object Model) ết thi lập cấu trúc của một trang HTML như là một cây thẻ tag, bộ phận HTML parser sẽ xây dựng cây theo chiều sâu.
14 Tìm hiểu Web Crawler và xây dựng ứng dụng GVHD: Ths Nguyễn Hồ Minh Đức 2.2 Khó khăn của tách lọc o Nhiều trang được công bố mà còn thiếu các thẻ quy định, các thẻ lồng nhau không đúng quy định, thiếu thẻ đóng, sai chính tả hoặc thiếu tên thuộc tính và giá trị, thiếu dấu ngoặc kép quanh các giá trị thuộc tính.v Ví dụ : Dấu ngoặc kép trong HTML được dành riêng cho cú pháp trong thẻ và do đó nó bị cấm trong văn bản. Tuy nhiên, chỉ một số ít các tác giả nhận thức được điều này và phần lớn các trang web chứa các ký tự này bất hợp pháp. Giống như trình duyệt, trình thu thập phải bỏ qua các trường hợp này. o Nhiều phiên bản tham khảo HTML và XHTML cùng tồn tại.
15 Tìm hiểu Web Crawler và xây dựng ứng dụng GVHD: Ths Nguyễn Hồ Minh Đức Hình 1: Minh họa cây DOM (hoặc thẻ tag) built từ 1 trang HTML đơn giản. Mỗi nốt hình oval là một thẻ, thẻ <html> là gốc node lá hình chữ nhật. o Các trang web ngày nay đang phát triển với các ngôn ngữ khác HTML. Các trình thu thập hỗ trợ công cụ tìm kiếm quy mô lớn thường tách, lập chỉ mục tài liệu trong nhiều định dạng mở và độc quyền như là txt, pdf, doc,… 16 Tìm hiểu Web Crawler và xây dựng ứng dụng GVHD: Ths Nguyễn Hồ Minh Đức o Một số định dạng được viết dành riêng cho các tương tác của con người, vì thế nó đặc biệt không thuận lợi cho trình thu thập.
Ví dụ : Một số trang web thương mại sử dụng hình ảnh động đồ họa trong Flash, đây là những khó khăn cho một trình thu thập phân tích để trích xuất các liên kết và nội dung văn bản. o Các tiêu chuẩn mới xuất hiện như: Scalable Vector Graphics (SVG – gần giống với chi tiết kỹ thuật của một định dạng file dựa trên XML để mô tả đồ họa vector hai chiều, cả tĩnh và động, tức là tương tác hoặc phim hoạt hình ), Asynchronous Javascript and XML (AJAX) và XML khác dựa trên ngôn ngữ được phổ biến.3 Cách khắc phục o Nếu trình thu thập chỉ cần trích ra các liên kết hoặc văn bản trong trang thì bộ phận tách lọc đơn giản có thể đủ đáp ứng. Các bộ phận tách lọc HTML có sẵn trong ngôn ngữ cấp cao như Java, Perl đang trở nên ngày càng tinh vi và mạnh mẽ.3 Loại bỏ Stopword và lấp đầy (Stemming) 2.1 Loại bỏ Stopword (Stopword Removal) Khi phân tích một trang web để trích xuất nội dung hoặc ghi lại URL của trang thì việc loại bỏ cái gọi là stopword là rất có ích. Loại bỏ Stopword là bỏ những từ thường xuyên xuất hiện trong hầu hết các tài liệu nhưng lại không quan trọng trong các tài liệu như tính từ, đại từ.
Ví dụ: AND, THE, A, AT, OR, ON, FOR,… 2.2 Lấp đầy (Stemming) Một công nghệ hữu ích khác là stemming. Trong một trình thu thập, nơi mà đường dẫn được ghi dựa trên sự giống nhau giữa trang nguồn và trang truy 17 Tìm hiểu Web Crawler và xây dựng ứng dụng GVHD: Ths Nguyễn Hồ Minh Đức vấn. Stemming cả hai: trang nguồn, trang truy vấn giúp cải thiện các mối tương đồng giữa hai tập hợp và sự đúng đắn của chức năng scoring.4 Trích lọc đường dẫn và hợp với quy tắc tiêu chuẩn 2.1 Trích lọc đường dẫn o Trình thu thập HTML giải nén U RL siêu liên kết của trang bằng cách tìm thẻ mấu chốt <a> và lấy các giá trị của các thuộc tính href liên quan. Các URL có được như vậy, cần phải được xử lý liên tục.
• Đầu tiên: chọn lọc để loại trừ các tập tin không được thu thập. Có thể đạt được với danh sách trắng. Ví dụ: Chỉ làm theo các liên kết đến văn bản/nội dung trang html. Có thể đạt được với danh sách đen.
Ví dụ: Loại bỏ các liên kết đến tập tin PDF. • Xác định một loại tập tin có thể dựa vào các phần mở rộng tập tin. Tuy nhiên, chúng thường không đáng tin cậy và đôi khi bị mất hoàn toàn. o Kiểu lọc khác phải làm việc với trạng thái tĩnh hoặc động của trang.
• Một trang động (ví dụ: tạo ra bởi 1 tập lệnh CGI - là ứng dụng của lĩnh vực đồ họa máy tính hoặc, cụ thể hơn, đồ họa máy tính 3D với hiệu ứng đặc biệt trong nghệ thuật, phim, chương trình truyền hình, quảng cáo, mô phỏng và mô phỏng nói chung, và các phương tiện truyền thông in ấn) có thể cho thấy 1 giao tiếp truy vấn cho cơ sở dữ liệu của vài ứng dụng khác trong trình thu thập mà không được quan tâm. Trang động trở nên phổ biến hơn, nó được sử dụng trong một loạt các trang web. 18 Tìm hiểu Web Crawler và xây dựng ứng dụng GVHD: Ths Nguyễn Hồ Minh Đức Rất khó để nhận ra qua kiểm tra URL. • Một trang tĩnh: Các trang thường ít phổ biến, nó sử dụng trong một số ít trang.
Dễ nhận biết bằng cách nối URL với /cgi-bin/ tên thư mục cho dòng lệnh CGI hoặc với các ký tự đặc biệt (? = &) được dùng trong chuỗi truy vấn CGI. Đối với những lý do trên, hầu hết các trình thu thập không còn phân biệt giữa các nội dung tĩnh và động. Trong khi một trình thu thập thông thường sẽ không tạo ra các URL truy vấn (trừ khi nó được thiết kế để thăm dò cái gọi là web sâu hoặc ẩn, có chứa cơ sở dữ liệu với giao diện truy vấn), nó sẽ thích hợp với các URL trong mã nguồn HTML của các trang phân tích cú pháp. o Các URL quan hệ phải được chuyển đổi thành các URL tuyệt đối trước khi thêm vào frontier.
Ví dụ: URL quan hệ http://www.com/news/today.html thay đổi thành tuyệt đối http://www. o Có nhiều quy tắc khác nhau để chuyển đổi URL tương đối thành tuyệt đối.