Trong cơ sở dữ liệu này, bảng AuthorInstance sẽ lưu các dữ liệu về gợi ý tác giả thu được ở bước một của quy trình thu thập dữ liệu. Người dùng sẽ xóa các bản ghi khơng đúng đi để chương trình tiếp tục bước ba. Các dữ liệu khác được lưu giống như cũ.
5.4.3 Cài đặt
Hệ thống thu thập dữ liệu này được xây dựng như một ứng dụng desktop dựa trên hệ thống web crawler ở phần trên, hệ thống được viết bằng Java và áp dụng các công nghệ sau:
- Ngôn ngữ phát triển: Java. - Công nghệ Java SE 7.
- Cơ sở dữ liệu quan hệ với hệ quản trị MySQL 5.6 - Công cụ phát triển: Netbeans 7.1
- Công nghệ web crawler.
- Request trang html bằng các hàm native trong Java .
- Giả lập request của web browser và xử lý JavaScript, AJAX bằng thư viện Selenium21 2.9.
- Phân tích trang html bằng thư viện Jsoup 1.5.2.
Kiến trúc hệ thống:
Thừa kế kiến trúc từ hệ thống web crawler ở phần trên, hệ thống này được xây dựng sử dụng Java SE thuần túy với sự hỗ trợ của một số thư viện chức năng, không sử dụng các framwork lập trình nhằm kiểm sốt code tốt hơn từ đó tối ưu chương trình. Hệ thống được xây dựng với kiến trúc nhiều tầng, gồm có các tầng sau:
Controller: Quản lý các hoạt động của chương trình.
Business Logic: Thực hiện các chức năng chính của chương trình như tạo danh sách url, request trang html, phân tích trang html lấy dữ liệu. Data Access: Cung cấp giao tiếp giữa chương trình và Database. Database: Cơ sở dữ liệu quan hệ quản lý dữ liệu của hệ thống.
Tổ chức code: Chương trình sử dụng lại tổ chức code của crawler ở phần
trên với các package tương đương. Sự khác biệt là lớp controller lúc này sẽ kiểm sốt dịng logic của web crawler mới, lớp business logic lúc này sẽ có các hàm thực hiện bước một và bước ba của quy trình thu thập dữ liệu.
Các kỹ thuật lập trình đáng chú ý:
Ngoài các kỹ thuật lập trình thừa kế từ web crawler ở phần trên, chương trình này cịn áp dụng một kỹ thuật đặc biệt là giả lập thao tác web browser. Như đã nói ở phần phân tích thiết kế, ở các trang html kết quả tìm kiếm, dữ liệu html về gợi ý tác giả chỉ được sinh ra sau khi trang html đã được tải về hoàn chỉnh bằng JavaScript theo cơ chế AJAX, vì vậy khơng thể lấy dữ liệu này bằng cách tải trang thơng thường. Chương trình đã giải quyết vấn đề này bằng cách sử dụng thư viện Selenium 2.9 để điều khiển web browser Firefox 10.0 giả lập thao tác tìm kiếm của người dùng, đồng thời xử lý JavaScript và AJAX của trang kết quả tìm kiếm để thu được trang html chứa dữ liệu gợi ý cần thiết.
Controller Business Logic
Data Access
DB
MAS