Chương 1: Tổng quan về khai thác dữ liệu trên Web Trong chương này, chúng ta sẽ tìm hiểu các khái niệm cơ bản về trình thu thập web (web crawler), các chiến lược thu thập dữ liệu, trình bóc tách và trích xuất thông tin (web scraper), sự phân loại các trang web, từ đó vẽ ra bức tranh chung về khai thác dữ liệu trên web để hiểu hơn về các giá trị thực tiễn mà nó mang lại trong đời sống con người. Chương 2: Phân tích, thiết kế ứng dụng 7 Phần đầu chương sẽ trình bày về các kiến thức nền tảng và các công nghệ liên quan, ở phần tiếp theo nêu phát biểu cho bài toán khai thác dữ liệu trên web cũng như giải pháp thực hiện, kiến trúc thành phần của ứng dụng. Chương 3: Hiện thực ứng dụng và đánh giá kết quả thu được Đặc tả thông tin đầu vào cho ứng dụng, lược đồ cơ sở dữ liệu tương ứng và chức năng của các module trong chương trình. Phần tiếp theo trình bày ví dụ cụ thể và kết quả thu được khi thực hiện ứng dụng.
Kết luận: Phần cuối của luận văn sẽ nhìn lại những điều đã làm được, nêu lên những hạn chế, từ đó đề ra hướng phát triển sau này. TỔNG QUAN VỀ KHAI THÁC DỮ LIỆU TRÊN WEB 1.1 TÌM HIỂU CÁC KIẾN THỨC TỔNG QUAN 1.1 WORLD WIDE WEB World Wide Web (WWW, hay gọi tắt là Web) là một ứng dụng phổ biến và phát triển mạnh mẽ nhất của Internet hiện nay. World Wide Web là một mạng lưới bao gồm các tài liệu siêu văn bản (hypertext) được đặt trên các máy tính nằm trong mạng Internet. Các siêu văn bản này có khả năng liên kết lẫn nhau thông qua các siêu liên kết (hyperlink).
Sử dụng một trình duyệt web (web browser), con người có thể xem được các trang web (web page, cũng chính là một siêu văn bản) trên màn hình máy vi tính, nội dung các trang web có thể có chữ, hình ảnh, video, thậm chí có thể tương tác với người sử dụng thông qua các thiết bị như bàn phím, chuột. Cũng chính nhờ các hyperlink mà các trang web có thể liên kết được với nhau thông qua chỉ một cú click chuột, đây là khả năng đem lại sự mở rộng vô cùng lớn cho world wide web. World Wide Web Nội dung các trang web chủ yếu được viết bằng ngôn ngữ HTML hoặc XHTML. Khi muốn truy cập một trang web, trình duyệt web sẽ gửi yêu cầu đến máy chủ (web server) chứa trang web đó.
Máy chủ sẽ hồi đáp bằng nội dung trang web được yêu cầu trong trường hợp trang web đó thật sự tồn tại trên máy chủ và được cho phép truy cập. Cả hai quá trình yêu cầu và hồi đáp này đều được thực hiện dựa trên giao thức HTTP (Hyper Text Transfer Protocol).2 TRÌNH THU THẬP DỮ LIỆU WEB – WEB CRAWLER 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 định trước. Vì là một chương trình nên quá trình “duyệt web” của các web crawler khô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 web browser như con người). Các web crawler thường bắt đầu với một danh sách URL của các web page để ghé thăm đầu tiên.
Khi ghé thăm 9 một URL, crawler sẽ đọc nội dung web page, tìm tất cả các hyperlink có trong web page đó và đưa các URL được trỏ tới bới các hyperlink đó vào danh sách URL. Dựa vào danh sách URL này, Crawler lại tiếp tục quá trình duyệt đệ quy để ghé thăm tất cả các URL chưa được duyệt đến. Quá trình này được gọi là web crawling hoặc là web spidering, các web crawler còn được gọi là các robot (bot) hoặc nhện web (web spider). Thường thì các crawler được tạo ra để phục vụ cho một mục đích, tác vụ nào đó.
Ví dụ các máy tìm kiếm (search engine) sử dụng crawler để tải các web page, các web page này sau đó được search engine đánh chỉ mục để có thể cho kết quả nhanh hơn khi được tìm kiếm. Sơ đồ hoạt động của một web crawler đơn giản Về bản chất, web crawling chính là quá trình duyệt đệ quy một đồ thị cây có các node là các web page. Tùy thuộc vào chiến lược của crawler, các node có thể được duyệt theo chiều sâu hoặc duyệt theo chiều rộng. Trong thực tế, quá trình crawling web sẽ phải đối diện với rất nhiều vấn đề khó khăn như: kích thước khổng lồ của world wide web, các trang web HTML được viết không chuẩn, hạn chế ghé thăm một URL đã được ghé thăm trước đó, các trang web động, nội dung các trang web được cập nhật thường xuyên v.3 TRÌNH BÓC TÁCH VÀ TRÍCH XUẤT THÔNG TIN – WEB SCRAPER 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á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ác web scraper được ra đời. Web Scraper 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ất thô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. Các web scraper khác với web crawler ở chỗ, trong khi web crawler tập trung vào việc duyệt các trang web thông qua các liên kết hyperlink, thì web scraper lại tập trung vào việc chuyển đổi nội dung không cấu trúc của các trang web (chủ yếu được viết bằng HTML) sang thành nội dung có cấu trúc, sau đó bóc tách, trích xuất phần thông tin 10 mong muốn và lưu trữ lại vào các cơ sở dữ liệu hoặc spreadsheet.
Các web scraper 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 web scraping bao gồm: so sánh giá cả thị trường trực tuyến, nghiên cứu thị trường, 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áo thờ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 có thể kể ra 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ần nộ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ểu thứ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ột yê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ây dựng một cây DOM (Document Object Model), giúp scraper 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.4 PHÂN LOẠI WEB World Wide Web có thể được phân loại thành hai loại: các trang web tĩnh và các trang web động. Sriram và Hector [3] đưa ra định nghĩa sau về trang web động: “Một trang P được gọi là động nếu như một phần hoặc tất cả nội dung của nó được sinh ra tại thời điểm chạy (tức là sau khi yêu cầu của máy khách được máy chủ nhận) bởi một chương trình thực thi nằm trên máy chủ hoặc máy khách. Điều này ngược lại với một trang tĩnh P1, khi mà toàn bộ nội dung của P1 đã tồn tại sẵn trên máy chủ và luôn sẵn sàng được gửi cho máy khách ngay sau khi một yêu cầu được nhận.” Các trang web động có thể được phân loại theo hai tiêu chí sau: sự thể hiện và cách thức tạo ra [3].1 Phân loại dựa vào sự thể hiện của tính động Theo thời gian (temporal dynamism): đây là những trang web mà nội dung của chúng có thể được thay đổi, cập nhật theo thời gian.
Điều này đồng nghĩa với việc: các yêu cầu đến cùng một trang web, khi được gửi ở hai thời điểm khác nhau có thể sẽ nhận được hai nội dung khác nhau. Theo máy khách (client-based dynamism): những trang web có khả năng tùy biến theo người sử dụng (client) sẽ được xếp vào mục này. Ví dụ một trang tin tức tổng hợp có khả năng chọn lọc các tin tức khác nhau, tùy thuộc vào sở thích của người 11 sử dụng đang đăng nhập. Những trang kiểu này thường không thể trực tiếp truy xuất vào được mà phải vượt qua một bước xác thực danh tính (authentication).
Theo truy vấn (input dynamism): đây là những trang có nội dung phụ thuộc vào truy vấn của người sử dụng. Một ví dụ điển hình là những trang có các mẫu nhập liệu (form), chẳng hạn một trường nhập liệu để tìm kiếm một hoặc nhiều món hàng trong cơ sở dữ liệu của trang web. Những trang kiểu này cũng không luôn luôn truy xuất trực tiếp được (tùy thuộc vào phương thức truyền các tham số - GET hoặc POST – chi tiết về vấn đề này sẽ được phân tích ở phần 4), các trang kết quả nhận được cũng thường có số lượng rất lớn (tùy thuộc số tổ hợp của các tham số truy vấn). Đây cũng thường là những trang web không thể crawl được hoàn toàn bởi các crawler, và được gọi là Web ẩn (hidden Web, deep Web, invisible Web).2 Phân loại dựa vào cách thức tạo ra tính động Thực thi các chương trình nằm trên máy chủ (server-side programs): Trong kỹ thuật này, một chương trình sẽ được thực thi trên máy chủ và sinh ra toàn bộ nội dung HTML của trang web, sau đó được gửi đến máy khách yêu cầu.
Ví dụ tiêu biểu cho loại này là CGI hoặc Java Servlet. Những chương trình phía máy chủ này cũng thường được dùng để xử lý các truy vấn từ người sử dụng. Nhúng mã với sự thực thi phía máy chủ (embedded code with server-side execution): các trang web động sẽ chứa cả nội dung HTML tĩnh cùng với các đoạn mã được nhúng vào cùng với HTML. Khi một yêu cầu được nhận, các đoạn mã nhúng này sẽ được thực thi trên máy chủ và sẽ sinh ra các đoạn code HTML thay thế cho chúng.
Kỹ thuật này khác kỹ thuật trên ở chỗ không phải toàn bộ mà chỉ một phần nội dung HTML được sinh động. Các mã nhúng này có thể là PHP, Java Scriplet, ASP hoặc các mã server-side khác.