Đánh giá về mặt khoa học của kết quả - Tìm hiểu các giải pháp thu thập thông tin Website thương mại điện tử - Đề xuất giải pháp xác thực dữ liệu thu thập, tăng độ chính xác dữ liệu để kế
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC LẠC HỒNG
* * *
CAO THỊ HỒNG SANH
XÂY DỰNG HỆ THỐNG NHẰM XÁC THỰC
DỮ LIỆU THU THẬP TỪ NHIỀU NGUỒN KHÁC NHAU
Luận văn thạc sĩ Công nghệ thông tin
Đồng Nai – Năm 2017
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC LẠC HỒNG
* * *
CAO THỊ HỒNG SANH
XÂY DỰNG HỆ THỐNG NHẰM XÁC THỰC
DỮ LIỆU THU THẬP TỪ NHIỀU NGUỒN KHÁC NHAU
Chuyên ngành : Công nghệ thông tin
Mã số: 60480201
NGƯỜI HƯỚNG DẪN KHOA HỌC PGS TS ĐẶNG TRẦN KHÁNH
Đồng Nai – Năm 2017
Trang 3LỜI CẢM ƠN
Tôi xin gửi lời cảm ơn đến các thầy cô giáo trường Đại học Lạc Hồng – Đồng Nai
đã quan tâm tổ chức chỉ đạo và trực tiếp giảng dạy khoá cao học của chúng tôi Cảm ơn cha (mẹ), thầy cô, bạn bè, đồng nghiệp và người thân gia đình, những người đã dạy bảo
và ủng hộ tôi trong suốt quá trình học tập
Đặc biệt, tôi xin gửi lời cảm ơn chân thành đến thầy giáo hướng dẫn PGS.TS Đặng Trần Khánh, người đã tận tình chỉ bảo và góp ý về mặt chuyên môn cho tôi trong suốt quá trình làm luận văn Nếu không có sự giúp đỡ của thầy thì tôi khó có thể hoàn thành được luận văn này
Trong suốt quá trình làm luận văn, bản thân tôi đã cố gắng tập trung tìm hiểu, nghiên cứu và tham khảo thêm nhiều tài liệu liên quan Tuy nhiên, do bản thân mới bắt đầu trên con đường nghiên cứu khoa học, chắc chắn bản luận văn vẫn còn nhiều thiếu sót Tôi rất mong được nhận sự chỉ bảo của các Thầy, Cô giáo và các góp ý của bạn bè, đồng nghiệp để luận văn được hoàn thiện hơn
Cuối cùng, tôi xin chúc sức khỏe Quý thầy cô và bạn bè, đồng nghiệp đã luôn ủng
hộ, động viên để tôi yên tâm nghiên cứu và hoàn thành luận văn
Đồng Nai, tháng 07 năm 2017
Học viên thực hiện
Cao Thị Hồng Sanh
Trang 4LỜI CAM ĐOAN
Tôi cam đoan luận văn “Xây dựng hệ thống xác thực dữ liệu thu thập từ nhiều nguồn khác nhau” là công trình nghiên cứu của bản thân Tài liệu tham khảo tôi có sử dụng đã được nêu rõ trong phần Tài liệu tham khảo Các số liệu, kết quả nêu trong luận văn là trung thực và chưa từng được ai công bố trong bất kỳ công trình nào khác
Tôi xin chịu trách nhiệm về nghiên cứu của mình!
Đồng Nai, tháng 07 năm 2017
Học viên thực hiện
Cao Thị Hồng Sanh
Trang 5TÓM TẮT LUẬN VĂN
Đề tài: Xây dựng hệ thống nhằm xác thực dữ liệu thu thập từ nhiều nguồn khác nhau
Ngành: Công nghệ thông tin Mã số: 60.48.02.01
Học viên: Cao Thị Hồng Sanh
Người hướng dẫn: PGS TS Đặng Trần Khánh
NỘI DUNG TÓM TẮT
1 Nội dung được giao và kết quả mong đợi của người hướng dẫn
- Nghiên cứu các cách thức thu thập thông tin Website thương mại điện tử
- Nghiên cứu các cách thức phân tích, rút trích thông tin sản phẩm từ mã nguồn Web
- Tìm hiểu các giải pháp và chiến thuật xác thực dữ liệu thu thập được từ nhiều nguồn khác nhau
- Hiện thực các giải pháp
- Kiểm thử các giải thuật này
- Viết báo cáo tổng kết luận văn
- Đề xuất kiến trúc hệ thống và công nghệ phù hợp với đề tài
- Phát triển hệ thống và thực hiện kiểm thử
Trang 63 Đánh giá về mặt khoa học của kết quả
- Tìm hiểu các giải pháp thu thập thông tin Website thương mại điện tử
- Đề xuất giải pháp xác thực dữ liệu thu thập, tăng độ chính xác dữ liệu để kết quả phân tích sau này chính xác, tin cậy hơn
- Cải thiện hệ thống thông qua khả năng mở rộng song song thu thập dữ liệu
4 Những vấn đề còn tồn tại so với nội dung được giao (nếu có)
Ngày 01 tháng 7 năm 2017
PGS TS Đặng Trần Khánh Cao Thị Hồng Sanh
Trang 7MỤC LỤC
LỜI CẢM ƠN .i
LỜI CAM ĐOAN ii
TÓM TẮT LUẬN VĂN iii
BẢNG DANH MỤC TỪ VIẾT TẮT vii
DANH MỤC BẢNG viii
BẢNG DANH MỤC HÌNH .ix
CHƯƠNG 1 TỔNG QUAN 1
1.1 Tổng quan đề tài 1
1.2 Mục đích đề tài 4
1.3 Mục tiêu chọn đề tài 4
2.1 Hệ thống thu thập dữ liệu 5
2.1.1 Chương trình thu thập dữ liệu 5
2.1.2 Vòng thu thập dữ liệu Website 7
2.2 Phương pháp thu thập dữ liệu 9
2.2.1 Trình thu thập đa luồng 9
2.2.2 Các thuật toán thu thập dữ liệu 11
2.3 Lược sử và kho lưu trữ trang 14
2.4 Mô hình thẻ HTML dạng cây 15
CHƯƠNG 3 PHÂN TÍCH THIẾT KẾ HỆ THỐNG XÁC THỰC DỮ LIỆU THU THẬP ĐƯỢC 17
3.1 Các giải pháp thu thập trang Web 17
3.1.1 Trình duyệt PhanTomJS 17
3.1.2 Thư viện HtmlUnit 19
3.1.3 Webview trên các thiết bị di động 20
3.2 Các giải pháp rút trích dữ liệu trang Web 21
3.2.1 Xpath 21
3.2.2 Regex (Regular Expresion – Biểu thức chính quy) 24
Bảng 3.1 Các quy tắc cơ bản của Regex 26
Trang 83.2.3 CSS Selector 28
3.3 Giải pháp xác thực dữ liệu 29
3.3.1 Giải pháp xác thực dữ liệu thông qua chiến thuật trùng lắp thu thập 29
3.3.2 Giải pháp xác thực dữ liệu dựa trên bất thường nội dung 30
CHƯƠNG 4 THIẾT KẾ HỆ THỐNG 39
4.1 Kiến trúc hệ thống thu thập dữ liệu 39
4.1.1 Kiến trúc tổng quan hệ thống 39
4.1.2 Kiến trúc thành phần thu thập dữ liệu 40
4.1.3 Thành phần tiền xử lý dữ liệu 45
4.1.4 Kiến trúc thành phần rút trích dữ liệu 46
4.1.5 Kiến trúc thành phần xác thực dữ liệu 48
CHƯƠNG 5 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 49
5.1 Đánh giá kết quả đặt được 49
5.1.1 Ưu điểm 49
5.1.2 Hạn chế 49
5.2 Đối với yêu cầu của đề tài: Đạt 49
TÀI LIỆU THAM KHẢO
Trang 9BẢNG DANH MỤC TỪ VIẾT TẮT
C2C Customer to Customer Khách hàng với
Khách hàng
HTTP/HTTPs
HyperText Transfer Protocol/
Hyper Text Transfer Protocol
Secure
Giao thức truyền tải siêu văn bản URL Uniform Resource Locator
HTML HyperText Markup Language Ngôn ngữ đánh dấu
Siêu văn bản XML eXtensible Markup Language Ngôn ngữ đánh dấu
mở rộng DOM Document Object Model Mô hình đối tượng
tài liệu CSS Cascading Style Sheets Các tập tin định kiểu
theo tầng JSON Javascript Object Notation
Regex Regular Expression Biểu thức chính quy SVG Scalable Vector Graphics
Web-API Web Application Programming
Interface
Trang 10DANH MỤC BẢNG
Bảng 3.1 Các quy tắc cơ bản của Regex
Bảng 3.2 Bảng Tập dữ liệu 1, Tập dữ liệu 2
Bảng 3.3 Bảng phân loại số từ theo thể loại
Bảng 3.4 Bảng ước lượng xác suất của từng từ
Trang 11BẢNG DANH MỤC HÌNH
Hình 2.1 Kiến trúc của trình thu thập Web
Hình 2.2 Vòng thu thập dữ liệu Web
Hình 2 3 Mô hình trình thu thập đa luồng
Hình 2 4 Mô hình cây tương ứng mã nguồn HTML
Hình 3 1 Tải trang web google.com bằng PhantomJS
Hình 3 2 PhantomJS đóng giả Safari trên Iphone
Hình 3.3 HTML giả dạng Chrome truy cập website thông qua Proxy Server Hình 3 4 Dùng hai hay nhiều Webview để tải trang web
Hình 3.5 Mô hình xác thực dữ liệu trùng lắp thu thập
Hình 3.6 Mô tả của bài đăng trên trang Vatgia.com
Hình 4.1 Kiến trúc tổng quan hệ thống
Hình 4.2 Sơ Đồ Mô Hình Hóa Trang Web
Hình 4.3 Lưu Đồ Của Hệ Thống Webcrawler
Hình 4.4 Lưu đồ của hệ thống Web Scraping
Hình 4.5 Kiến trúc mô hình rút trích dữ liệu
Hình 4.6 Sơ đồ dòng dữ liệu khi được rút trích
Hình 4.7 Kiến trúc mô hình xác thực
Trang 12CHƯƠNG 1 TỔNG QUAN 1.1 Tổng quan đề tài
Trong bối cảnh Internet phổ biến trên toàn thế giới lĩnh vực thương mại điện tử đang là thị trường đầy tiềm năng và đầy hấp đẫn đối với các Doanh nghiệp và các cá nhân đang ấp ủ kinh doanh qua mạng Thương mại điện tử là xu hướng của thời đại toàn cầu hóa, đây là lĩnh vực tiềm năng để các doanh nghiệp vừa và nhỏ sinh lợi và phát triển, cơ hội cho những ai muốn khởi nghiệp kinh doanh theo mô hình mới Thương mại điện tử còn được xem như một trong những giải pháp thúc đẩy sự phát triển của nền kinh tế quốc gia Các công ty đại diện cho sự thành công trong lĩnh vực thương mại điện tử trên thế giới như Amazon, Ebay, Alibaba,… và ở Việt Nam như Tiki, Vatgia, Lazada
Hiểu đươ ̣c xu hướng phát triển của thi ̣ trường là chìa khóa quan tro ̣ng để dẫn đến thành công, nhất là với các doanh nghiệp mà sự sinh tồn phu ̣ thuộc hoàn toàn vào người dùng Cách tìm hiểu thi ̣ trường tốt nhất chính là thu thập và thống kê các tin tức trên chính các trang Web đang tồn tại trên thị trường Để điều tra nhằm thâm nhập thị trường hoặc tái đầu tư, doanh nghiệp phải đầu tư vào bộ phận làm công việc nghiên cứu thị trường Công cụ của họ có thể là thủ công bằng tay viếng thăm từng trang Web hoặc dùng Robot, máy chủ để thu thập tự động thông tin (Crawler)
Trong thị trường thương mại điện tử to lớn đó C2C (Customer-to-Customer)
là mô hình bán hàng mà người tham gia chính là khách hàng Việc bán hàng diễn
ra giữa khách hàng và khách hàng Doanh nghiệp chỉ cung cấp môi trường, cơ sở vật chất để giao dịch diễn ra Hiểu đươ ̣c xu hướng phát triển của thi ̣ trường C2C
là chìa khóa quan tro ̣ng để dẫn đến thành công không chỉ cho doanh nghiệp mà
cả khách hàng Doanh nghiệp đầu tư vào thị trường C2C mong sinh lợi cao nhất, còn khách hàng ở thị trường C2C mong bán được giá tốt nhất, bán nhanh nhất
Để điều tra nhằm thâm nhập thị trường hoặc tái đầu tư, doanh nghiệp phải đầu tư vào bộ phận nghiên cứu thị trường, công cụ của họ bao gồm:
Trang 13Thủ công bằng tay: Con người viếng thăm từng trang Web đối với cách làm thủ công bằng tay chi phí cao, tốc độ chậm, độ chính xác tương đối vì phụ thuộc con người
Dùng Robot, máy chủ để thu thập tự động thông tin (Crawler): Đối với cách làm này chi phí thấp, tốc độ nhanh, độ chính xác cao Tuy nhiên, cách làm này sẽ
bị ngăn chặn bởi quản trị viên của các trang web, người quản trị các trang web ngăn chặn bằng cách:
Không muốn tài nguyên máy chủ của họ bị lãng phí bởi các Robot hay Crawler mà họ muốn tài nguyên của mình được dùng phục vụ cho người dùng thật để tạo ra những đơn hàng
Khi họ phát hiện các Robot hay Crawler đang thu thập thông tin thì họ sẽ ngăn lại hoặc trả về dữ liệu không chính xác Khi dữ liệu trả về không chính xác gây ra thiệt hại lớn cho nhà đầu tư
Khách hàng, chủ doanh nghiệp không nắm bắt thị trường, dẫn đến đầu tư không hiệu quả, gây lãng phí cho xã hội
Hiện tại có ít nghiên cứu cũng như ứng dụng thu thập dữ liệu hỗ trợ xác thực kết quả dữ liệu thu thập được Do thị trường quá rộng lớn và thường xuyên biến động, làm cho việc thu thập và xác thực dữ liệu rất khó khăn
Vì vậy, mục tiêu của đề tài là “Xây dựng hệ thống nhằm xác thực dữ liệu thu thập từ nhiều nguồn khác nhau”
Đề tài luận văn thạc sĩ “Giải pháp vượt qua sự ngăn chặn thu thập dữ liệu thương mại điện tử” của học viên Nguyễn Tấn Nhân lớp CNTT Khóa 7 Trường
đại học Lạc Hồng Giới hạn của đề tài trên là dữ liệu thu thập chưa được xác
thực là dữ liệu gốc hay là dữ liệu đã bị chỉnh sửa bởi nhà cung cấp dịch vụ trả về
Vì trong kinh doanh, hiểu được xu thế phát triển của thị trường là một trong chìa khoá quan trọng để mở ra cánh cửa thành công Đặc biệt trong mảng kinh doanh dạng C2C, cách tốt nhất để tìm hiểu thị trường là áp dụng thống kê số liệu cho từng mẫu đăng không những trên chính trang của mình mà cả trên trang của đối thủ cạnh tranh với mình Việc thu thập và phân tích thông tin được thực hiện qua
Trang 14sức người là không hữu hiệu vì có hàng trăm mẫu rao bán được đăng mỗi ngày
Vì vậy việc xây dựng hoặc thuê mướn một hệ thống “Server” nhằm mục đích tự động việc thu thập, lưu trữ, và phân tích dữ liệu mạng để thay thế con người trong việc tìm hiểu thị trường đã trở thành một nhu cầu rất lớn trong giới kinh doanh qua mạng Do đó đề cập đến phương án doanh nghiệp mướn các hệ thống
“Server” để nghiên cứu thị trường
Các nhà cung cấp dịch vụ chuyên môn sẽ thâm nhập và thu thập dữ liệu từ bất kỳ trang mạng nào theo yêu cầu của khách hàng Như đã nói trên, khi chúng
ta chọn một nhà cung cấp dịch vụ cho việc thu thập, lưu trữ dữ liệu, có một số rủi ro khiến chúng ta phải cân nhắc cẩn thận Sau khi dữ liệu được thu thập sẽ được lưu trữ trong máy chủ của nhà cung cấp dịch vụ và hoàn toàn bị họ quản lý
Họ có thể trực tiếp thao túng dữ liệu mà không thông qua sự cho phép hoặc thậm chí sự hay biết của chúng ta Cho nên không ai có thể bảo đảm rằng dữ liệu được giao ra hoàn toàn là dữ liệu gốc Ngoài ra một số Doanh nghiệp có thoả thuận với các nhà cung cấp dịch vụ phải đưa dữ liệu sai cho đối thủ của mình Điều này có nghĩa là khách hàng của các nhà cung cấp dữ liệu nhận được thông tin đã
bị chỉnh sửa và mất đi độ tin cậy Xa hơn nữa, xác định độ trung thực của thông tin trước khi phân tích là rất quan trọng trong quá trình nghiên cứu thị trường
Có nhiều nghiên cứu trước đây về các hệ thống thâm nhập và thu thập thông tin mạng có thể giúp chúng ta tạo một hệ thống cho riêng mình Nhưng các nghiên cứu này không đưa ra bước kiểm tra độ xác tín của dữ liệu Rủi ro dữ liệu
bị thao túng cũng bị bỏ qua trong các nghiên cứu này Thêm nữa, cấu trúc phức tạp của dữ liệu từ các trang mạng C2C là một trong những thách thức mà chúng
ta phải đối diện Vì sự phức tạp này chúng ta không thể sử dụng chỉ một phương pháp nào đó mà phải kết hợp nhiều cách khác nhau để tìm ra thông tin gian lận hiệu quả hơn
Vì vậy tôi chọn đề tài “Xây dựng hệ thống nhằm xác thực dữ liệu thu thập
từ nhiều nguồn khác nhau” nhằm mang lại hiệu quả về mặt thời gian và kinh tế cho các doanh nghiệp
Trang 151.2 Mục đích đề tài
Luận văn tập trung nghiên cứu về hệ thống thu thập dữ liệu, nghiên cứu các giải pháp rút trích dữ liệu, giải pháp xác thực dữ liệu Ứng dụng kết quả nghiên cứu vào hệ thống Website nhằm thu thập dữ liệu được chính xác hơn
Nội dung luận văn: gồm 05 chương
Chương 1: Tổng quan về tình hình nghiên cứu trong và ngoài nước liên quan đến phương pháp xác thực dữ liệu thu thập từ nhiều nguồn, mục tiêu đề tài
và giới hạn của đề tài
Chương 2: Cơ sở lý thuyết
Chương 3: Phân tích thiết kế hệ thống xác thực dữ liệu thu thập được
Chương 4: Thiết kế hệ thống
Chương 5: Kết luận và hướng phát triển
Phương pháp thực hiện:
Nghiên cứu trong tài liệu (từ các sách, bài báo, tạp chí khoa học ) Thừa
kế, tham khảo các kết quả nghiên cứu gần và có liên quan
Tìm hiểu các hệ quản trị cơ sở dữ liệu có khả năng lưu trữ dữ liệu thương mại điện tử thu thập được: Tìm hiểu thông qua sách, báo, internet…
Đề xuất kiến trúc hệ thống và công nghệ phù hợp với đề tài
Phát triển hệ thống và thực hiện kiểm thử
1.3 Mục tiêu chọn đề tài
Luận văn tập trung xác thực dữ liệu thu thập được trên thị trường thương mại điện tử C2C mà cụ thể là nghiên cứu thị trường về mảng Điện thoại di động Luận văn chỉ quan tâm tới độ chính xác mà không quan tâm tới thời gian thực hiện
Khi xác thực dữ liệu thu thập chỉ thực hiện trên đối tượng hình ảnh và văn bản riêng biệt, chưa xác thực dữ liệu thu thập được khi đối tượng hình ảnh và văn bản lồng nhau
Trang 16CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 2.1 Hệ thống thu thập dữ liệu
2.1.1 Chương trình thu thập dữ liệu
Web Crawler là một chương trình khai thác cấu trúc đồ thị đi từ trang này đến trang khác Nó còn có tên gọi là bọ Web, Robot, Spider, và sâu Web Crawler thường được sử dụng để thu thập tài nguyên (tin tức, hình ảnh, video…) Hiện nay tên gọi phổ biến là trình thu thập Web [1],[6]
Hình 2.1 Kiến trúc của trình thu thập Web
Để lấy một trang Web, chúng ta cần một máy khách (Client) gửi nhiều yêu cầu HTTP/HTTPS đến Web server, chờ đợi phản hồi và rồi phân tích chúng [4], [5] Client cần thu thập song song nhiều trang Web để tránh phải dành thời gian chờ phản hồi từ các máy chủ website chậm hoặc do các trang lớn Ngày nay, các Web server tối ưu vấn đề này bằng cách gửi về Client một phần vừa đủ để hiển thị trang đầu tiên (Above side) để người dùng thấy trang Web đã phản hồi nội dung Sau đó, những nội dung còn lại của Website mới tiếp tục được gởi về
Trang 17thông qua việc thực thi Javascript Điều này tạo hiệu ứng người dùng không phải chờ đợi lâu, thường dưới 0.5 giây là trang Web đã hiển thị nội dung Khi không phải chời đợi lâu, khả năng người dùng rời trang Web càng thấp Nếu hệ thống Crawler không hỗ trợ Javacript thì chỉ một phần nội dung trang Web mà không phải là toàn bộ được lưu trữ vào trong kho dữ liệu Vì vậy, hỗ trợ Javascript là một yếu tố quan trọng để Crawler có thể lấy nội dung trang Web
Các trình thu thập thường chọn các trang Web sẽ ghé thăm đầu tiên, gọi là các trang hạt giống (Seeds) Seeds được người dùng nhập vào và đây cũng chính
là những trang mà ta muốn thu thập thông tin Hệ thống thu thập sẽ vào địa chỉ này lọc ra thông tin rồi tìm ra các địa chỉ URL khác (Dựa vào những liên kết có trong trang hạt giống) Sau đó thêm chúng vào danh sách các địa chỉ đã được duyệt qua gọi là Crawl Frontier Hệ thống thu thập sẽ lặp lại quá trình trước đó
để duyệt qua những URL chưa được duyệt Quá trình này chỉ dừng lại khi trình thu thập đã thu thập đủ số trang yêu cầu hoặc Frontier là rỗng tức là không còn URL để duyệt
Sau khi có được danh sách các URL dùng cho việc thu thập, ta sẽ thực hiện quá trình lấy trang Tất cả các trang được lấy một lần và được lưu trữ vào một kho lưu trữ giống như cơ sở dữ liệu của công cụ tìm kiếm Đến đây không cần thu thập thêm Tuy nhiên Web là một thực thể năng động với các không gian con liên tục phát triển và thay đổi một cách chóng mặt, vì thế thông tin phải liên tục được thu thập để giúp các ứng dụng luôn được cập nhật, ví dụ bổ sung các trang mới loại bỏ các trang đã bị xóa, di chuyển hoặc cập nhật các trang bị sửa đổi Các trang Web chủ yếu được viết bằng ngôn ngữ đánh dấu siêu văn bản HTML, XHTML và được hướng đến đối tượng sử dụng là con người chứ không phải máy tính Thông tin trên các trang Web vô cùng phong phú và đầy hữu ích
do đó con người muốn thu thập và lưu trữ lại Vì thế cần phải có những kỹ thuật bóc tách dữ liệu (Parsing) từ đơn giản chỉ là bóc tách các siêu liên kết đến phức tạp hơn là bóc tách bất kỳ nội dung nào trong một trang Web
Trang 18Hệ thống Search engine bắt đầu bằng trình thu thập nội dung thông tin (Crawl) của trang Web, sau đó tiến hành lập chỉ mục cho toàn bộ phần nội dung bên trong và tiến hành lưu trữ trang Web này trong cơ sở dữ liệu, trả về giá trị và chỉ mục cho hàng triệu truy vấn của người dùng GoogleNews có nhiệm vụ tổng hợp tất cả các tin tức diễn ra hàng ngày trên Internet Các trang Web được lập chỉ mục dựa trên các thuật toán và mỗi thuật toán có những tác động tùy mục đích
sử dụng, chẳng hạn như: Mật độ từ khóa liên kết, các đường link, thẻ metatag
2.1.2 Vòng thu thập dữ liệu Website
Cách tiếp cận đơn giản là Vòng thu thập dữ liệu, vòng gồm danh sách chứa các URL chưa được ghé thăm, được gọi là biên (Frontier) Biên có thể chứa hàng chục ngàn đến hàng trăm ngàn trang Danh sách được khởi tạo bởi một số URL hạt giống, các URL được cung cấp bởi người dùng hoặc một chương trình khác đây là địa chỉ những trang Web mà người dùng muốn thu thập thông tin Hệ thống sẽ vào địa chỉ này lọc thông tin rồi tìm ra các địa chỉ URL khác (dựa vào các liên kết có bên trong các Seeds) Sau đó thêm chúng vào danh sách các địa chỉ đã được duyệt qua gọi là Crawl Frontier Hệ thống sẽ lặp lại quá trình trước
đó để duyệt qua những URL mới Quá trình Crawling sẽ qua rất nhiều địa chỉ Website và thu thập rất nhiều nội dung khác nhau từ địa chỉ thu thập được hoạt động của vòng thu thập như sau [2]:
Lấy một URL từ Frontier ra để thu thập
Lấy trang tương ứng với URL thông qua HTTP hoặc HTTPS
Bóc tách trang vừa lấy để trích xuất ra các URL và các nội dung thông tin trang
Cuối cùng là thêm các URL chưa ghé thăm vào Frontier
Quá trình thu thập sẽ chấm dứt ngay khi trình thu thập thu thập đủ số trang nhất định hoặc Frontier rỗng
Trang 19Một người duyệt Web thường sẽ đi từ trang chủ đến trang danh mục sản phẩm rồi mới đến trang sản phẩm chi tiết Khi đó người dùng có thể mở nhiều tab trình duyệt để có thể duyệt sản phẩm nhanh nhất Do đó cách thu thập dữ liệu vòng này sẽ không thực hiện được với hệ thống Web Server chống Crawler Hệ thống Web Server chống Crawler không đơn giản ngăn chặn kết nối từ Crawler,
mà tinh vi nguy hiểm hơn khi chúng trả về dữ liệu giả cho Crawler Hình dưới
mô tả vòng thu thập dữ liệu Web
Hình 2.2 Vòng thu thập dữ liệu Web
Start
Seed URLs (hạt giống)
Pick URL from frontier
Fetch page
Parse page
Add URLs to frontier
Trang 20Một cách thu thập khác là thu thập dạng lan truyền Người dùng vẫn cung cấp URL hạt giống, ví dụ trang chủ Hệ thống Crawler sẽ giả lập hành vi người dùng khi tìm đến trang danh mục sản phẩm (Category), lấy danh sách URL của sản phẩm trong danh mục này Từ danh sách này Crawler có thể giả lập hành vi
mở nhiều tab duyệt Web để thu thập dữ liệu Việc lan truyền không chỉ dừng lại
ở cấp trên Category đi xuống cấp sản phẩm (Product) mà còn có thể đi ngang, từ Product này sang Product khác Việc lan truyền theo chiều ngang có thể được thực thi khi trang Web cung cấp tính năng gợi ý sản phẩm tương tự Mỗi sản phẩm tương tự sẽ là một đường dẫn URL đến sản phẩm khác của trang Web Với cách thu thập dữ liệu này, hệ thống có thể thực thi song song trên nhiều thiết bị thu thập dữ liệu Khi đó, hệ thống cần có một máy trung tâm để quản lý các URL, xác định URL nào đã duyệt rồi, URL nào cần phải thu thập dữ liệu trên thiết bị có địa chỉ IP gì…
2.2 Phương pháp thu thập dữ liệu
2.2.1 Trình thu thập đa luồng
Mỗi vòng thu thập tuần tự chiếm một lượng lớn thời gian, trong khi đó một trong hai cái là CPU hoặc mạng lại nhàn rỗi: CPU nhàn rỗi (trong khi truy cập mạng/đĩa) hoặc mạng nhàn rỗi (trong các hoạt động của CPU) Việc xử lý đa luồng với mỗi luồng là một vòng thu thập, có thể giúp cho việc tăng tốc độ hợp
lý và sử dụng hiệu quả băng thông có sẵn
Trang 21Hình 2.3 Mô hình trình thu thập đa luồng
Mô hình đa luồng là mô hình làm việc gồm nhiều luồng trên cùng một Frontier với mỗi luồng là một vòng thu thập Chính vì thế cần một cơ chế đồng
bộ để tránh việc xung đột khi các luồng cùng tiến hành quá trình thu thập trên một Frontier Cơ chế này như sau:
Luồng đầu tiên bắt đầu bằng cách khóa Frontier để chọn URL tiếp theo cho quá trình thu thập dữ liệu
Sau khi lấy ra một URL nó sẽ mở khóa Frontier cho phép các luồng tiếp theo truy cập vào Frontier
Frontier lại bị khóa lại để những URL mới được thêm vào
Các bước khóa này là cần thiết để đồng bộ hóa việc sử dụng Frontier khi mà Frontier bị chia sẻ bởi nhiều vòng thu thập Một trình thu thập thông thường sẽ duy trì một cấu trúc dữ liệu lược sử phục vụ cho việc tra cứu nhanh các URL đã
Trang 22được thu thập Do đó ngoài các Frontier thì việc đồng bộ hóa các truy cập vào lược sử là điều cần thiết
Các mô hình trình thu thập đa luồng cũng cần phải đối phó với các Frontier rỗng giống như một trình thu thập theo tuần tự Tuy nhiên đây là vấn đề không đơn giản Nếu một luồng thu thập phát hiện ra Frontier rỗng, nó không tự động hiểu là toàn bộ trình thu thập đã đến trạng thái kết thúc Nó có thể cho rằng các luồng khác đang lấy trang và có thể thêm các URL mới trong tương lai gần Một cách giải quyết với tình trạng này là đặt một luồng một trạng thái chờ khi Frontier bị khóa Khi hết thời gian chờ nó sẽ kiểm tra lại Frontier Sẽ có một bộ kiểm tra chịu trách nhiệm theo dõi số luồng đang ở trạng thái chờ tại thời điểm hiện tại Chỉ khi tất cả các luồng đều ở trạng thái chờ thì khi đó trình thu thập sẽ dừng lại
2.2.2 Các thuật toán thu thập dữ liệu
- Thu thập dữ liệu theo Naive Best-First: sử dụng thuật toán tìm kiếm
theo nguyên tắc tính điểm số cho các URL Điểm số của một URL được tính bằng phương pháp độ tương đồng cosin của trang Web tương ứng và truy vấn
mà người sử dụng đưa ra, độ tương đồng cosin là tính độ tương đồng giữa 2 vector n chiều bằng cách tìm osin góc giữa chúng, phương pháp đo độ tương đồng cosin được dùng để so sánh một truy vấn với một trang văn bản Độ tương đồng của trang p và truy vấn q được tính bằng công thức:
Độ tương đồng (p,q) = cos(vp, vq) = (v_p*v_q)/(|(|v_p |)|*||v_q ||)
Trong đó vp, vq là các vector đại diện được tính dựa trên tần số phát sinh (term frequency) Tần số phát sinh có thể hiểu là số lần xuất hiện của các từ truy vấn q trong trang p
Vp*Vq là tích vô hướng của 2 vector; ║v║ là giá trị độ dài Euclid của vector v Nếu độ tương đồng (p,q)= -1 tức là khác nhau tuyệt đối
Nếu độ tương đồng (p,q)= 0 tức là độc lập với nhau
Nếu độ tương đồng (p,q)= 1 tức là chính xác tuyệt đối
Trang 230 < độ tương đồng (p,q) < 1 tức là trang p có liên quan đến truy vấn q
-1 < độ tương đồng (p,q) < 0 tức là trang p không có liên quan đến truy vấn
q Quá trình thu thập dữ liệu dùng trong trình thu thập tuần tự được thực hiện như sau:
Bước 1: Sắp xếp URL theo thứ tự giảm dần điểm số Lấy ra URL đầu tiên trong danh sách
o Nếu có qua Bước 2
o Nếu không qua Bước 5
Bước 2: Lấy trang tương ứng với URL qua HTTP hoặc HTTPS
o Nếu có qua Bước 3
o Nếu không quay lại Bước 1 lấy URL tiếp theo
Bước 3: Kiểm tra xem trang này đã được thăm chưa?
o Nếu chưa qua Bước 4
o Nếu rồi quay lại Bước 1 lấy URL tiếp theo
Bước 4: Đánh dấu trang này đã được thăm Bóc tách trang và tìm các liên kết có trong trang này
o Nếu có, thêm các liên kết vào cuối danh sách Quay lại Bước 3
o Nếu không quay lại Bước 1 lấy URL tiếp theo
Bước 5: Kết thúc
- Thu thập dữ liệu theo chiều sâu (Depth-first Search):
Là thuật toán tìm kiếm bằng cách mở rộng nút đồ thị theo chiêu sâu Quá trình thu thập dữ liệu theo chiều sâu được thực hiện như sau:
Bước 1: Lấy URL đầu tiên trong danh sách (Frontier) để thu thập
o Nếu có qua Bước 2
o Nếu không qua Bước 5
Bước 2: Lấy trang tương ứng với URL qua HTTP hoặc HTTPS
o Nếu có qua Bước 3
o Nếu không quay lại Bước 1 lấy URL tiếp theo
Trang 24Bước 3: Kiểm tra xem trang này đã được thăm chưa?
o Nếu chưa qua Bước 4
o Nếu rồi quay lại Bước 1 lấy URL tiếp theo
Bước 4: Đánh dấu trang này đã được thăm Bóc tách trang và tìm các liên kết có trong trang này
o Nếu có, thêm các liên kết vào đầu danh sách Quay lại Bước 3
o Nếu không quay lại Bước 1 lấy URL tiếp theo
Bước 5: Kết thúc
- Thu thập dữ liệu theo chiều rộng (Breath-First Search): Là thuật toán
tìm kiếm bằng cách mở rộng đỉnh đồ thị theo chiều rộng Quá trình được thực hiện như sau:
Bước 1: Lấy URL đầu tiên trong danh sách (Frontier) để thu thập
o Nếu có qua Bước 2
o Nếu không qua Bước 5
Bước 2: Lấy trang tương ứng với URL qua HTTP hoặc HTTPS
o Nếu có qua Bước 3
o Nếu không quay lại Bước 1 lấy URL tiếp theo
Bước 3: Kiểm tra xem trang này đã được thăm chưa?
o Nếu chưa qua Bước 4
o Nếu rồi quay lại Bước 1 lấy URL tiếp theo
Bước 4: Đánh dấu trang này đã được thăm, bóc tách trang và tìm các liên kết có trong trang này
o Nếu có thêm các liên kết vào cuối danh sách, quay lại Bước 3
o Nếu không quay lại Bước 1 lấy URL tiếp theo
Bước 5: Kết thúc
- Thu thập dữ liệu theo ngẫu nhiên:
Bước 1: Lấy URL ngẫu nhiên trong danh sách (Frontier) để thu thập
o Nếu có qua Bước 2
Trang 25o Nếu không qua Bước 5
Bước 2: Lấy trang tương ứng với URL qua HTTP hoặc HTTPS
o Nếu có qua Bước 3
o Nếu không quay lại Bước 1 lấy URL tiếp theo
Bước 3: Kiểm tra xem trang này đã được thăm chưa?
o Nếu chưa qua Bước 4
o Nếu rồi quay lại Bước 1 lấy URL tiếp theo
Bước 4: Đánh dấu trang này đã được thăm, bóc tách trang và tìm các liên kết có trong trang này
o Nếu có, thêm các liên kết vào cuối danh sách, quay lại Bước 3
o Nếu không quay lại Bước 1 lấy URL tiếp theo
Bước 5: Kết thúc
2.3 Lược sử và kho lưu trữ trang
Với hai phương pháp thu thập dữ liệu đã nêu ở phần trên, hệ thống cần một lược sử thu thập dữ liệu Lược sử thu thập dữ liệu là danh sách đánh dấu theo thời gian các URL được lấy bởi trình thu thập Lược sử được lưu trữ nhằm cung cấp cho một tra cứu nhanh để kiểm tra một trang URL đã được ghé thăm hay chưa, ghé thăm bởi thiết bị có địa chỉ IP bao nhiêu, thời điểm cuối cùng ghé thăm là khi nào…
Khi một trang được lấy nó phải được lưu trữ và lập chỉ mục nhằm mục đích phục vụ cho cách ứng dụng sau này Kho dữ liệu này có thể dùng bởi công cụ tìm kiếm, trình khai phá dữ liệu
Có hai lựa chọn khi lưu trữ trang Web sau khi chúng được thu thập: Lưu trữ dạng thô hoặc dạng đã qua phân tích, xử lý Dạng thô là toàn bộ nội dung HTML trang Web, có thể bao gồm hình ảnh và Video Với dạng này, hệ thống sẽ phải tốn rất nhiều bộ nhớ để lưu trữ Tuy nhiên, kho sẽ chứa đựng những giá trị mà người phân tích dữ liệu hiện tại chưa nhìn thấy hoặc cần đến Sau này, khi họ cần đến một thuộc tính nào đó của kho dữ liệu, họ có thể phân tích, khai phá kho dữ
Trang 26liệu thô để rút trích ra chúng Ngược với kho dữ liệu thô là kho dữ liệu đã phân tích, xử lý Với dạng này, chỉ những thông tin đã được phân tích, rút trích từ dữ liệu thô mới được lưu vào bộ nhớ không gian lưu trữ được tiết kiệm Tuy nhiên, những giá trị tìm ẩn của dữ liệu thô cũng sẽ bị bỏ đi trong quá trình phân tích, rút trích dữ liệu
2.4 Mô hình thẻ HTML dạng cây
Các trình thu thập có thể lấy ra giá trị của các URL hoặc một nội dung bất
kỳ trong một trang web bằng cách kiểm tra phạm vi thẻ HTML chứa chúng Để thực hiện trình thu thập có thể sử dụng mô hình thẻ HTML dạng cây và phân tích cấu trúc DOM (Document Object Mode) của mô hình này Phân tích cấu trúc DOM giúp cho trình thu thập 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
Trong hình 2.4 ta nhận thấy thẻ <html> là gốc của cây, các thẻ bên trong
nó là node mở rộng và dữ liệu text là lá của cây
Trang 27<li> <a href="dali.html">DALI</a> A distributed, adaptive, order logic theorem prover.</li>
Trang 28CHƯƠNG 3 PHÂN TÍCH THIẾT KẾ HỆ THỐNG
XÁC THỰC DỮ LIỆU THU THẬP ĐƯỢC 3.1 Các giải pháp thu thập trang web
Có nhiều giải pháp thu thập dữ liệu đáp ứng những phân tích ở trên trong luận văn đưa ra các giải pháp sau: Trình duyệt PhantomJS, Thư viện HtmlUnit, Webview
3.1.1 Trình duyệt PhanTomJS
PhantomJS [11] là một trình duyệt không giao diện, PhantomJS dựa trên thư viện Webkit và thư viện V8 của Google Nó được viết bằng JavaScript PhantomJS khác với các trình duyệt thông thường mà chúng ta hay sử dụng như: Chrome, Firefox… Với các trình duyệt thông thường chúng ta sẽ thực hiện trực tiếp các thao tác với Website thông qua giao diện hiển thị của các trình duyệt Với PhantomJS chúng ta sẽ tương tác với Website thông qua các câu lệnh mà không quan tâm đến giao diện PhantomJS thường được dùng để kiểm thử logic hoạt động của Website không thông qua giao diện hoặc kiểm tra hiệu suất của Website
Các ưu, nhược điểm của PhantomJS gồm:
Không thực hiện các thao tác trực tiếp với Website
Không kiểm tra được tính chính xác của giao diện
Trang 29Mặc dù không trực tiếp hiển thị được giao diện của Website nhưng PhantomJS có thể chụp lại ảnh giao diện trang Web Thông qua đó chúng ta có thể kiểm tra được giao diện của Website Hình dưới đây sẽ minh họa việc truy cập và chụp ảnh Website của PhantomJS
Hình 3 1 Tải trang web http://google.com bằng PhantomJS
PhantomJS có thể giả lập trình duyệt trên các môi trường khác nhau như Chrome, Safari… chạy trên máy tính cá nhân hay thiết bị di động Hình dưới đây minh họa sử dụng PhantomJS đóng giả Safari chạy trên iPhone để tải trang Web http://google.com
Hình 3 2 PhantomJS đóng giả Safari trên Iphone
Trang 30Từ những ưu điểm trên PhantomJS được sử dụng để Crawl trang Web Đặc biệt nó được dùng để Crawl những trang Web mà mã nguồn HTML được sinh ra bởi JavaScript, đây là những trang Web khó Crawl nhất Thư viện mở rộng CasperJS của PhantomJS chạy trên Webkit nên có thể coi nó như một trình duyệt, nó có thể Get, Support nhiều thứ của web như DOM handing, CSS selector, JSON, Canvas, SVG Ngoài ra CasperJS còn có thể tự động điền form
và gửi chúng lên Server, giả người dùng nhấp vào các đường dẫn, chụp lại một phần hay toàn bộ trang Web, phân tích trang Web bằng DOM các phần tử hoặc Xpath
3.1.2 Thư viện HtmlUnit
HtmlUnit [12] là một thư viện giả lập trình duyệt không giao diện, nó được viết bằng Java, mô hình hóa tài liệu HTML và cung cấp các API cho phép người dùng thư viện tương tác với trang Web, điền form cũng như giả lập nhấp vào các đường dẫn trong trang Web HtmlUnit giả dạng như một trình duyệt thông thường như Firefox, Chrome hay Internet Explorer Thư viện này cũng hỗ trợ JavaScript với những thư viện AJAX phức tạp Với những ưu điểm trên, HtmlUnit có thể dùng để tạo ra những ứng dụng Web Crawler chạy trên máy chủ không trình duyệt Những máy chủ không trình duyệt rất phổ biến, vì người quản trị tiết kiệm tài nguyên hệ thống khi không cung cấp giao diện Những máy chủ này có một yếu điểm là địa chỉ IP và vị trí địa lý cố định Điều này làm cho máy chủ trang Web Crawler dễ dàng bị phát hiện Html khắc phục điều này bằng cách cung cấp chức năng kết nối Internet thông qua Proxy server Hình dưới đây minh họa cách HtmlUnit crawl dữ liệu một Website
Trang 31Hình 3.3 HTML giả dạng Chrome truy cập website thông qua Proxy Server
3.1.3 Webview trên các thiết bị di động
Thiết bị di động thường gắn với một người dùng thật Khi họ di chuyển địa chỉ IP và vị trí vật lý của họ cũng thay đổi Khi đó, thiết bị di động sẽ dễ dàng giả dạng người dùng chống lại Anti-crawling Ứng dụng Crawler trên thiết bị di động có thể tải trang web bằng linh kiện phần mềm Webview Với khả năng hỗ trợ JavaScript, Webview có thể trả về nội dung HTML của trang web, dù cho chúng có được sinh ra từ JavaScript hay không để tăng hiệu suất tải trang Web Hình bên dưới dùng hai hay nhiều Webview để tải trang web
Hình 3 4 Dùng hai hay nhiều Webview để tải trang web