Tổng quan nghiên cứu

Sự bùng nổ của mạng toàn cầu trong hơn 2 thập kỷ qua đã biến Internet thành một kho tri thức khổng lồ với hàng tỷ trang thông tin phân tán. Tuy nhiên, việc khai thác và thu thập nguồn dữ liệu hữu ích này phục vụ cho các bài toán kinh doanh, khảo sát thị trường hay quản trị hệ thống thường xuyên gặp phải rào cản lớn về tốc độ và chi phí nhân lực. Trong thực tế, các tác vụ thủ công như sao chép thông tin danh bạ doanh nghiệp, trích xuất giá cả sản phẩm hay tổng hợp tin tức đòi hỏi nhiều giờ lao động lặp đi lặp lại, dẫn đến tỷ lệ sai sót trong nhập liệu có thể lên tới 15% đến 20%.

Trước thực trạng đó, đề tài nghiên cứu "Khai thác dữ liệu trên Web và xây dựng ứng dụng hỗ trợ nhập liệu" được thực hiện tại Viện Công nghệ thông tin – Đại học Quốc gia Hà Nội vào năm 2014 nhằm giải quyết triệt để bài toán tự động hóa trích xuất dữ liệu. Mục tiêu cốt lõi của luận văn là nghiên cứu các phương pháp thu thập web tự động, từ đó thiết kế và hiện thực hóa hệ thống phần mềm mang tên DESS (Data Entry Support System).

Phạm vi nghiên cứu tập trung vào việc mô hình hóa các cấu trúc web dạng danh mục đa cấp (Master - Detail), xử lý cả các trang web tĩnh lẫn các trang web động có hành vi phức tạp. Về mặt giá trị thực tiễn, giải pháp đề xuất giúp cắt giảm hơn 85% thời gian thu thập dữ liệu thủ công, đồng thời đảm bảo độ chính xác và tính toàn vẹn dữ liệu đạt mức xấp xỉ 100% khi kết xuất sang các hệ quản trị cơ sở dữ liệu phục vụ quy trình nhập liệu doanh nghiệp.

Cơ sở lý thuyết và phương pháp nghiên cứu

Khung lý thuyết áp dụng

Nghiên cứu được xây dựng dựa trên 2 nền tảng lý thuyết trọng tâm trong khoa học máy tính: lý thuyết duyệt đồ thị trong thu thập web (Web Crawling) và mô hình trích xuất dữ liệu dựa trên cây phân cấp đối tượng tài liệu (Document Object Model - DOM). Web được mô hình hóa như một đồ thị có hướng, trong đó mỗi trang web là một đỉnh (node) và mỗi siêu liên kết (hyperlink) là một cạnh kết nối. Luận văn vận dụng 2 thuật toán tìm kiếm kinh điển trên đồ thị gồm: thuật toán duyệt theo chiều rộng (Breadth-First Search - BFS) và thuật toán duyệt theo chiều sâu (Depth-First Search - DFS).

Bên cạnh đó, nghiên cứu kế thừa mô hình phân loại web động của Sriram và Hector với 3 chiều không gian thể hiện tính động: tính động theo thời gian (temporal dynamism), tính động theo người dùng (client-based dynamism) và tính động theo truy vấn đầu vào (input dynamism/Deep Web). Các khái niệm then chốt được chuẩn hóa bao gồm:

  • Web Crawler: Chương trình tự động duyệt đồ thị siêu liên kết dựa trên danh sách URL ban đầu (frontier).
  • Web Scraper: Trình bóc tách và chuyển đổi văn bản phi cấu trúc (HTML) thành dữ liệu có cấu trúc.
  • Cú pháp chuẩn XML/XHTML: Quy chuẩn tài liệu đúng dạng (well-formed) với 5 nguyên tắc nghiêm ngặt về đóng thẻ, chữ thường và giá trị thuộc tính.
  • Ngôn ngữ truy vấn XPath 1.0: Hệ thống truy vấn node trên cấu trúc cây phân cấp với 4 kiểu dữ liệu cơ bản (node-set, string, number, boolean) cùng các trục định vị (axes) và vị từ (predicates).
[Web Resource] 

Phương pháp nghiên cứu

Nguồn dữ liệu thực nghiệm được lấy từ các hệ thống website danh bạ doanh nghiệp và trang thương mại điện tử có cấu trúc phân trang đa cấp phức tạp. Luận văn áp dụng phương pháp phân tích thực nghiệm kết hợp thiết kế hệ thống phần mềm hướng module, chia tách thành 2 tầng xử lý: tầng thu thập (Crawler) và tầng trích xuất (Extractor).

Cỡ mẫu thử nghiệm bao gồm hơn 100 trang web phân tầng theo cấu trúc Master - Detail từ cấp 1 (danh mục chính) đến cấp N (trang chi tiết doanh nghiệp). Phương pháp chọn mẫu có chủ đích được áp dụng nhằm bao phủ đầy đủ 2 nhóm công nghệ web:

  • Nhóm I: Chuyển trang qua phương thức HTTP GET/POST tiêu chuẩn.
  • Nhóm II: Chuyển trang phụ thuộc mã thực thi phía máy khách như JavaScript, AJAX và ASP.NET PostBack.

Lý do lựa chọn phương pháp phân tích này là nhằm khắc phục triệt để tính phi chuẩn của HTML thực tế. Thay vì sử dụng biểu thức chính quy (Regex) dễ đổ vỡ khi giao diện web thay đổi, hệ thống sử dụng thư viện TidyLib để chuyển đổi toàn bộ mã HTML nguồn thành XHTML chuẩn tắc, sau đó áp dụng biểu thức XPath để trích xuất chính xác tuyệt đối các trường thông tin. Toàn bộ quá trình nghiên cứu và thử nghiệm được hoàn thiện trong lộ trình từ giữa năm 2013 đến tháng 01 năm 2014.

Kết quả nghiên cứu và thảo luận

Những phát hiện chính

Quá trình hiện thực và đánh giá thực nghiệm ứng dụng DESS đã mang lại 4 kết quả nổi bật:

Thứ nhất, hệ thống đã giải quyết thành công bài toán phân loại và thích ứng công nghệ thu thập. Đối với 100% các trang web nhóm I, module Simple Crawler tích hợp thư viện cURL cho tốc độ tải trang trung bình dưới 1,2 giây/trang. Đối với các trang web nhóm II chứa mã JavaScript hoặc sự kiện AJAX, module Advanced Crawler sử dụng thư viện HtmlUnit giả lập trình duyệt không giao diện (headless browser) đã thực thi chính xác các sự kiện click chuột và nhập dữ liệu vào form, đạt tỷ lệ thu thập nội dung thành công trên 96%.

Thứ hai, việc kết hợp giữa bộ lọc TidyLib và truy vấn XPath giúp tăng độ chính xác trích xuất dữ liệu lên mức 98,5%, vượt trội hoàn toàn so với phương pháp so trùng chuỗi Regex truyền thống (thường chỉ đạt 70% đến 75% khi gặp mã HTML bị lỗi cú pháp hoặc thiếu thẻ đóng).

Thứ ba, nghiên cứu đã chuẩn hóa thành công cấu trúc tệp cấu hình đặc tả XML với 5 nhóm hành động (Action) linh hoạt: Capture Action, Block Action, Link Action, Type Action và Click Action. Nhờ đó, người dùng chỉ cần thiết lập cấu hình 1 lần duy nhất để bóc tách hàng ngàn bản ghi mà không cần lập trình lại mã nguồn.

Thứ tư, hệ thống tích hợp sẵn 6 hàm xử lý hậu kỳ (Helper Functions) gồm trim, replace, entity, strip, space, content, giúp làm sạch trực tiếp 100% dữ liệu văn bản trước khi nạp vào 5 bảng cơ sở dữ liệu quan hệ của MySQL.

Tiêu chí so sánh Phương pháp thủ công Regex Scraper truyền thống Hệ thống DESS (Luận văn)
Tốc độ xử lý / 1.000 bản ghi 8 - 12 giờ làm việc 15 - 20 phút 3 - 5 phút
Tỷ lệ chính xác cấu trúc dữ liệu 80% - 85% (sai sót do người) 70% - 75% (lỗi thẻ HTML) 98,5% (nhờ Tidy + XPath)
Khả năng xử lý Web động (AJAX/PostBack) Phụ thuộc thao tác tay Không thể xử lý Tự động hóa qua HtmlUnit
Khả năng tùy biến và mở rộng Không áp dụng Phải viết lại code Đặc tả động qua XML

Thảo luận kết quả

Nguyên nhân chính giúp DESS đạt hiệu năng vượt trội nằm ở kiến trúc ghép nối linh hoạt giữa ngôn ngữ PHP ở tầng xử lý chuỗi và Java (HtmlUnit) ở tầng thực thi kịch bản client-side. Thư viện cURL mang lại ưu thế vượt trội về tốc độ và khả năng quản lý phiên làm việc (session/cookie), trong khi HtmlUnit giải quyết trọn vẹn điểm nghẽn của các bộ thu thập truyền thống khi đối mặt với "Web ẩn" (Deep Web).

Khi so sánh với các nghiên cứu crawler quy mô lớn phục vụ máy tìm kiếm (như Googlebot hay các dự án học thuật dạng HiWE), DESS không phân tán tài nguyên để quét toàn bộ web nổi mà tập trung sâu vào trích xuất có định hướng theo mô hình Master - Detail. Cách tiếp cận này giúp tối ưu hóa băng thông mạng và giảm tải dung lượng lưu trữ cục bộ tới 90%.

Về mặt quản trị tiến trình, kiến trúc hệ thống được thiết kế theo mô hình máy trạng thái hữu hạn với 4 trạng thái vận hành của Bot: Ready (Sẵn sàng), Started (Đang chạy), Paused (Tạm dừng) và Error (Gặp lỗi). Mỗi tác vụ thu thập được phân bổ chạy trên một tiến trình hệ điều hành độc lập (OS Process) thông qua lệnh proc_open, giúp kiểm soát Process ID (PID), hỗ trợ cơ chế đa tiến trình an toàn và ngăn ngừa hiện tượng nghẽn tài nguyên bộ nhớ khi vận hành dài hạn.

Đề xuất và khuyến nghị

Dựa trên kết quả nghiên cứu thực nghiệm, 4 giải pháp trọng tâm được đề xuất nhằm hoàn thiện và nâng cao hiệu năng khai thác dữ liệu web:

  1. Nâng cấp công cụ thực thi mã máy khách: Chuyển đổi tầng Advanced Crawler từ thư viện HtmlUnit sang các framework tự động hóa trình duyệt hiện đại như Headless Chrome hoặc Playwright. Mục tiêu là nâng khả năng render chính xác các ứng dụng Single Page (SPA) viết bằng React hoặc Angular lên 100%, triển khai trong vòng 6 tháng bởi nhóm kỹ sư phát triển phần mềm.
  2. Tối ưu hóa kiến trúc đa tiến trình và hàng đợi phân tán: Thay thế cơ chế quản lý tiến trình cục bộ proc_open bằng hệ thống hàng đợi phân tán (Message Queue như RabbitMQ kết hợp Redis). Giải pháp này giúp tăng tốc độ cào dữ liệu đồng thời lên 300%, xử lý song song từ 50 đến 100 Robot mà không gây quá tải CPU, mục tiêu hoàn thành trong lộ trình 9 tháng.
  3. Mở rộng thư viện Helper xử lý ngôn ngữ tự nhiên: Bổ sung hơn 10 hàm helper chuyên sâu tích hợp biểu thức chính quy nâng cao và nhận dạng thực thể (NER). Điều này giúp tự động chuẩn hóa các trường thông tin đặc thù như mã số thuế, số điện thoại, địa chỉ hành chính đạt độ chính xác 99% ngay tại tầng bóc tách.
  4. Hoàn thiện cơ chế phòng chống chặn IP (Anti-Bot): Nâng cấp module <options> trong cấu hình XML bằng việc tích hợp hệ thống luân chuyển tự động 50+ proxy dân cư kết hợp thuật toán giãn cách thời gian truy vấn ngẫu nhiên (random sleep từ 2 đến 5 giây). Giải pháp do bộ phận quản trị hạ tầng phụ trách, đảm bảo giảm thiểu tỷ lệ bị khóa địa chỉ IP xuống dưới 1%.

Đối tượng nên tham khảo luận văn

Nội dung và mã nguồn kiến trúc của luận văn mang lại giá trị thực tiễn sâu sắc cho 4 nhóm đối tượng:

  • Kỹ sư phát triển phần mềm và Data Engineers: Cung cấp tài liệu tham khảo giá trị về thiết kế kiến trúc phân tầng (Crawler - Extractor), kỹ thuật đóng gói Wrapper cho cURL, TidyLib và phương pháp tích hợp đa ngôn ngữ giữa PHP và Java.
  • Doanh nghiệp thương mại điện tử và Digital Marketing: Ứng dụng trực tiếp mô hình DESS để tự động hóa quy trình thu thập thông tin đối thủ, theo dõi biến động giá thị trường và xây dựng cơ sở dữ liệu khách hàng B2B tiềm năng, tiết kiệm hơn 80% chi phí vận hành.
  • Học viên cao học và Nhà nghiên cứu khoa học dữ liệu: Nắm vững cơ sở lý thuyết về phân loại web động, các thuật toán duyệt đồ thị cây DOM, cũng như phương pháp luận ứng dụng XML/XPath vào bài toán Information Retrieval.
  • Chuyên viên phân tích nghiệp vụ và Quản trị hệ thống thông tin: Tiếp cận mô hình chuẩn hóa quy trình nhập liệu tự động (ETL), hỗ trợ chuyển đổi dữ liệu từ các nguồn web phân tán sang 4 định dạng phổ biến gồm SQL, CSV, XLS và XLSX.

Câu hỏi thường gặp

DESS giải quyết sự khác biệt giữa trang web tĩnh và web động như thế nào?

Hệ thống phân tách trang web thành 2 loại: Loại I (chuyển trang bằng HTTP GET/POST tiêu chuẩn) được xử lý bởi Simple Crawler thông qua cURL nhằm tối ưu tốc độ; Loại II (chuyển trang qua JavaScript, AJAX, ASP.NET PostBack) được chuyển giao cho Advanced Crawler sử dụng HtmlUnit để thực thi mã script và tái tạo cây DOM hoàn chỉnh trước khi bóc tách.

Tại sao luận văn sử dụng kết hợp HTML Tidy và XPath thay vì Regular Expression?

Mã nguồn HTML thực tế trên Internet thường xuyên bị lỗi cú pháp, thiếu thẻ đóng hoặc lồng thẻ sai quy cách, khiến biểu thức Regular Expression rất dễ trích xuất sai lệch. TidyLib đảm nhận việc sửa chữa mã nguồn thành chuẩn XHTML well-formed, tạo điều kiện cho XPath truy vấn chính xác theo tọa độ phân cấp cây DOM với độ tin cậy đạt trên 98%.

Hệ thống quản lý vòng đời và trạng thái hoạt động của Robot ra sao?

Robot được quản lý chặt chẽ thông qua 4 trạng thái: Ready, Started, Paused và Error. Mỗi tác vụ thu thập chạy trên một tiến trình hệ điều hành độc lập thông qua Process ID riêng biệt. Người dùng có thể chủ động kích hoạt, tạm dừng, tiếp tục hoặc hủy bỏ tiến trình mà không làm gián đoạn hay xung đột dữ liệu với các tác vụ khác.

Ứng dụng hỗ trợ những định dạng đầu ra nào để phục vụ công tác nhập liệu?

Dữ liệu sau khi trích xuất được lưu trữ đồng bộ vào các bảng động wde_data_[ID] trong cơ sở dữ liệu MySQL. DESS cung cấp module xuất dữ liệu linh hoạt ra 4 định dạng tệp thông dụng gồm: SQL (phục vụ nạp database trực tiếp), CSV, XLS và XLSX (phục vụ nhập liệu vào Microsoft Excel hoặc các phần mềm quản trị nghiệp vụ).

DESS xử lý các cơ chế bảo vệ như chống flood IP và yêu cầu đăng nhập như thế nào?

Tệp cấu hình XML của DESS hỗ trợ 3 thẻ tùy chọn mạnh mẽ trong phần <options>: thẻ <sleep> thiết lập độ trễ giữa các lần gửi request (ví dụ 2 giây), thẻ <proxy> thiết lập danh sách IP luân phiên để tránh chặn truy cập, và thẻ <auth> hỗ trợ cả xác thực HTTP cơ bản (Basic Auth) lẫn xác thực biểu mẫu (Form-based Auth).

Kết luận

  • Luận văn đã xây dựng thành công hệ thống DESS, giải quyết triệt để bài toán tự động hóa thu thập và bóc tách dữ liệu từ các website danh mục đa cấp phục vụ công tác nhập liệu.
  • Đề xuất giải pháp kiến trúc kép kết hợp hiệu quả giữa Simple Crawler (cURL) cho web tĩnh và Advanced Crawler (HtmlUnit) cho web động có mã JavaScript.
  • Thiết lập chuẩn đặc tả dữ liệu đầu vào bằng XML với 5 Action đa năng cùng 6 hàm Helper chuẩn hóa, giúp loại bỏ 100% rào cản về tính phi chuẩn của mã HTML nguồn.
  • Thiết kế hoàn chỉnh mô hình quản trị Bot đa tiến trình với 4 trạng thái vận hành độc lập và cấu trúc cơ sở dữ liệu linh hoạt gồm 5 bảng quản lý.
  • Định hướng lộ trình nâng cấp hệ thống sang kiến trúc phân tán hiện đại trong giai đoạn 12 đến 24 tháng tới nhằm đáp ứng các tiêu chuẩn dữ liệu lớn.

Để khai thác tối đa tiềm năng của giải pháp, các tổ chức và cá nhân có nhu cầu tự động hóa quy trình nhập liệu có thể tải về tài liệu toàn văn, nghiên cứu lược đồ XML mẫu và triển khai thử nghiệm hệ thống DESS ngay hôm nay nhằm nâng cao năng suất quản trị thông tin doanh nghiệp.