Phát triển hệ thông thu thập và lưu trữ dit liệu TMĐT dạng NoSOLSố lượng website TMĐT đã được xác nhận thông báo, đăng ký Với bất kỳ doanh nghiệp nào, hiểu được xu hướng phát triển của t
Trang 1BÙI XUÂN GIANG
_ PHÁT TRIEN HE THONG THU THẬPVÀ LƯU TRU DU LIEU TMDT DẠNG NoSQL
Chuyên ngành : Hệ Thống Thông Tin Quản LyMã số: 60 34 04 05
LUẬN VĂN THẠC SĨ
TP HO CHI MINH, tháng 12 năm 2017
Trang 2CÔNG TRÌNH ĐƯỢC HOÀN THÀNH TẠITRUONG ĐẠI HOC BACH KHOA —ÐHQG -HCMCán bộ hướng dẫn khoa học : PGS.TS Đặng Trần Khánh
Thanh phân Hội dong đánh giá luận văn thạc sĩ gôm:(Ghi rõ họ, tên, học hàm, học vi của Hội đông châm bảo vệ luận vănthạcs) _
1 TS TRAN MINH QUANG 2 TS LELAM SON o.oo ccccccccccccecescecesesees3 TS NGUYEN THANH BINH 4 TS NGUYEN TUẦN DANG 5 TS PHAN TRONG NHÂN Xác nhận của Chủ tịch Hội đồng đánh gia LV va Trưởng Khoa quản lýchuyên ngành sau khi luận văn đã được sửa chữa (nêu có).
CHỦ TỊCH HỘI DONG TRƯỞNG KHOA KH & KTMT
Trang 3NHIEM VỤ LUẬN VAN THẠC SĨHọ tên học viên: Bùi Xuân Cang + S22 MSHV: 7141135 Ngày, thang, năm sinh: 29/07/1984 c5 22222 ssccsa Nơi sinh: TP HCM Ngành: Hệ thống thông tin quản lý -2-2-s+cscz+x+xzxcc Mã số : 60 34 04 05 I TÊN ĐÈ TÀI: Phát triển hệ thống thu thập và lưu trữ dữ liệu TMĐT dạng NoSQL
II NHIỆM VỤ VÀ NỘI DUNG: Ặ.222 22122222122 2 re
1.Xây dựng ứng dụng giúp hỗ trợ thu thập dữ liệu của các trang web thương mại điện tử từ
đó làm tiên đê cho các công cụ phân tích và trích xuât thông tin 2 Cài đặt cơ sở dữ liệu MongoDB dé lưu trữ toàn bộ dữ liệu thu thập được ở dạng NoSQL,HI NGÀY GIAO NHIỆM VU: 10/07/2017 - 5S: S33 3 E222 2122 EEEErErErrrrrrreIV NGÀY HOÀN THÀNH NHIỆM VỤ: 03/12/2017 5 55c St crrErErrrrrrrreeV CAN BO HƯỚNG DAN : PGS.TS Đặng Trần Khánh - 52x cE2EcEvrxzkrrees
Tp HCM, ngay tháng năm 20
CÁN BỘ HƯỚNG DÂN TRƯỞNG KHOA KH & KTMT
(Họ tên và chữ ký) (Họ tên và chữ ký)
Trang 4LỜI CÁM ƠN
Tôi xin tỏ lòng kính trọng và biết ơn sâu sắc đối với thay PGS.TS Dang TranKhánh đã trực tiếp tận tình hướng dẫn cũng như cung cấp tài liệu thông tin khoahọc can thiết cho luận văn này
Xin chân thành cảm ơn giảng viên Nguyễn Thanh Tùng đã nhiệt tình giúpđỡ cho tôi trong công việc.
Cuối cùng tôi xin chân thành cảm ơn tất cả thay cô giảng dạy lớp cao học khóa2014 đã cung cấp kiến thức và kinh nghiệm trong quá trình học tập để giúp tôihoàn thiện Luận văn.
Tôi hy vọng dé tài luận văn này sẽ là nguôn nguyên liệu tốt để giúp các bạn cónhu cau thu thập dữ liệu của các trang web thương mại điện tử, nhằm mục đíchriêng của mình có thé giảm bớt thời gian tìm hiểu từ dau Tôi cũng mong các bancó thê phát triên và hoàn thiện các phan còn thiêu sót cua dé tài này.
Trang 5Trong đề tài luận văn của minh, tôi đã chia quá trình tìm hiệu và hiện thực mụctiêu theo từng giai đoạn tương ứng với các chương được trình bày như bên dưới :
Chương 1 : Tìm hiểu tong quan về thị trường thương mại điện tử từ đó đưa raquyết định cho việc lấy dữ liệu từ nguồn này có cần thiết và quan trọng hay không
Chương 2 : Sau khi đã xác định mục tiêu rõ ràng tôi sẽ xác định phạm vi nghiên
cứu của dé tài cũng như nêu lên ý nghĩa khoa học và ý nghĩa thực tiễn mà luận văn đề
và thiết kế hệ thống Sau đó, tôi tiến hành hiện thực và kiếm thử hệ thống bang cách
thu thập dữ liệu các trang web thương mại điện tử đang hoạt động.Cuôi cùng, chương 5 nêu kêt quả đạt được của luận văn, đóng góp của dé tài và
hướng mở rộng của hệ thống
Trang 6Chapter 4: Based on the research in this phase 3, I perform system analysis anddesign Then, I implemented reality and tested the system by crawling activeecommerce sites.
Finally, chapter 5 presents the results of the thesis, the contribution of the topicand the direction of the extension of the system.
Trang 7Mọi sự giúp đỡ cho việc thực hiện luận văn này đều đã được cảm ơn và mọi thông tin
trích dân trong luận văn đã được chỉ rõ nguôn gôc rõ ràng và được phép công bô.
Học viên thực hiện
Bùi Xuan Giang
Trang 8Phát triển hệ thông thu thập và lưu trữ dit liệu TMĐT dạng NoSOL
MỤC LỤC
CHƯƠNG 1 : TONG QUAN VE LUẬN VĂN Street 41.1 Giới thiệu sơ lược tình hình TÌMĐÏT - SSScQQSnn nh xa 41.2 Ý nghĩa của luận văn - 5-5 - xxx 3£EEEEEEEEE515151151111111E111 Lee, 61.2.1 Y nghĩa khoa hỌC - - + 5E +E+E+E#E£ESEEEEEEEEEEEEEEEEEEEEEEEEEEEErkrkrkrkrkree 61.2.2 Y nghĩa thực tiỄn - - - + + 111515151515 1515151515 1515151111151 Ex re 61.3 Mục tiêu, giới hạn và đối tượng nghiên cứu s52 2 + +c+s+szszszscs2 71.3.1 Mục tiêu nghiÊn CỨU TS kh 71.3.2 Giới hạn nghiên cứu của dé tài ee sececeseesesseseeteveveeesereeveeen 71.3.3 Đối tượng nghiên cứu - + E3 321 SE SE 1511111111111 ri 71.4 Cấu trúc luận Vance ecccesescecescescscessecesseceevsceeveceevaceevaceevscsavsesaceesevaceaeanees 8
CHUONG 2 CO SO LY THUYET VA CAC CONG TRINH NGHIEN CUU053 89207.9))0 5 10
2.1 Các công trình nghiên cứu liÊn quan - - «5 55555 5S xa 102.2 Cách thức thu thập dữ liệu, phân loại website và các thư viện hỗ trợ 192.2.1 Cách thức thu thập dữ liệu - Sư 192.2.2 Phân loại website cần thu thập dữ liệu -¿ 2 cc+csesezszersre2 192.2.3 Một vài thư viện hỗ trợ xây dựng công cụ crawÌer - 202.3 Giới thiệu về dữ liệu lớn- Big Data 5-5-2 2 E3 £zEzEeEsErkrererrered 372.4 Kho chứa dữ liỆU - Q01 ng ng nhà 402.4.1 Khái quát - - LH nh 402.4.2 Tại sao lại chọn MongolDB°2 - - ccccsn nh v vy 412.4.3 Kiến trúc tỐng Quát - - E2 SE SE E2 9151515151111 1111111111111 11x 412.4.4 Cơ chế hoạt động chi tiết của MongolDB se seerese 43
CHƯƠNG 3 PHAN TÍCH VA THIẾT KE HE THỒNG 55s ssss s2 55
3.1 Nghiệp vụ hệ thống - - 6-6 2E Sz SE 5E9E5151111121 2111111151111 111 cee, 55
Trang 93.2 Kiến trúc hệ thống thu thập dữ liệu - 5-2 +2 ++E+s+E££EzEzEzEzkrererzered 573.2.1 Kiến trúc hệ thong thu thập dữ liệu dạng I 2 2 + +c+s+szs2 573.2.2 Kiến trúc hệ thong thu thập dữ liệu dạng 2 ¿-2 2 2 +c+c+szszs2 59
CHƯƠNG 4 THỰC NGHIEM VÀ ĐÁNH GIÁ 6 c c Sex se EsEsvsEsesereeee 60
4.1 Cài đặt và kiêm thử công cụ thu thập dữ liệu dạng I - 604.2 Đặc điểm nổi bật của công cụ thu thập dữ liệu dang l - 644.3 Cai đặt và kiểm thử công cụ thu thập dữ liệu dạng 2 -5-5-5- 65CHƯƠNG 5 KẾT LUẬN Gv E11 SH ST T HT Tư TH TT Hàn cư: 68
Trang 10Phát triển hệ thông thu thập và lưu trữ dit liệu TMĐT dạng NoSOL
Hình 1 : Báo cáo số lượng website TMĐT trong 3 năm gan đây (BC của Bộ Công
THUONG) oo -d 4 ae 5
Hình 2 Kiến trúc hệ thống thu thập dữ liệu ¿- - E+E+E+E+ESESEEEEEEEEcEeEekeeereereeree 14
Hình 3 Mô hình làm việc của RabbitÌMCQ - - - n1 1111111111111 ra 15
Hình 4 Kiến trúc Hive 2-6 kk SE SE Sk*E9 9E 3E 151313 1111111515 1111115151111 T1 1x 17Hình 5 Chay ứng dung Spark trên YARN trong chế độ clusfer - - 2 ss+s+s+¿ 18Hình 6 Vi dụ về chức năng load web site của phantomJS 2 2 s+s+s+xsxe+e+xecee 32
Hình 7 Hình ảnh trang web sẽ được load bởi PhantomJS - «+ ++s++<<<<ssssssss 33
Hình 8 Một demo vé giả lập trình duyệt trên Iphone - 2-2-5 + 2 s+E+E+E+Ez£erezxesez 34
Hình 9 Hình anh trang web được gia lập load trên IOS <5 << s++sssssesesrss 35
Hình 10 Demo về thời gian loading một website được đo bởi phantomjs 36
Hình 11 Mô hình kiến trúc của Big Data - c6 ESE#E#ESESEEEEEEEEkckekekekekeererree 39Hình 12 Ví dụ về MongoDB document ¿66k SE#E#E+ESESEEEEEEEEEckekekeeereereeree 42Hình 13 So sánh giữa RDBMS và MongolDB c c1 vn HH vn 11 re 42Hình 14 So sánh Table với COlÏ€CfIOT - 1111113333911 1111111811111 11118811111 rre 43Hinh 15 00:02 Ồ a 44
Hình 16 Các bản sao dữ liệu trong một shard 5 11111 55E+eseesssssss 45Hình 17 : 4 khoảng cho 4 shard [a,f), [f.n), [n.£) [f.Í) -<<<<< << ssssseeseesssssss 45Hình 18 Giới hạn lại khoảng cho shard 1 sang shard 2 55+ << <<++++++sssssss 46Hình 19 Chuyén dữ liệu sang shard tiếp theo - + 2-2 + SE +E+E+E+E#ESEE+EeEeEerererkrree 47Hình 20 Thêm mới shard rồi chia đều dữ liệu -¿-55¿57++2c++rxczrtsrrsrterrerrrerved 48Hình 21 Không liên tiếp các khoảng cho phép ta lẫy ra - 5-5-5 2 2+E+k+EeEsrerrereee 49Hình 22 Chuyển 100GB của mỗi shard ném vào shard 5 - - 2 2 s+s+s+£s£+e+x+S+z 50Hình 23 Chia một chunk ra thành ha1 5E + + 21112 31 EE E553 £xcerrres 52Hình 24 Nếu cần bang real time, sẽ có những tai nguyên bị di chuyén lãng phí 54
Hình 25 Số điện thoại bị mã hóa thành hình ảnh -. 5-©525++2c+vextsrxszrvsrresreed 56Hình 26 Các thành phần kiến trúc của hệ thống thu thập dữ liệu dang I 57
Hình 27 Mô hình Use Case Diagram cua công cụ dang I -+++<<<<<<<5 58Hinh 28 M6 hinh kién tric công cụ thu thập dữ liệu dang 2 -<<<<<<<<52 59Hình 29 Giao diện nhập URL Website GG 010 0000111111119993331 111111111 ng 60Hình 30 Giao diện nhập category trên web Admin << << << 1s sseeexeeseesssssss 61Hình 31 Giao diện App Android khi chưa load web site mục tiêu - 62
Hình 32 Giao diện trên điện thoại Android sau khi load Website mục tiêu 63
Hình 33 Danh sách các task đang thực thi trên giao diện Website Admin 64
Hình 34 Hàm load ngẫu nhiên danh sách các url của trang web mục tiêu 65
Hình 35 Ham xử ly Scroll view ngẫu nhiên và xử ly giản cách theo thời gian 65
Hình 36 Cac file và thư mục của công cụ thu thập dữ liệu dạng 2 66
Hình 37 Nội dung file script dé khởi chạy công CU ccccccccscssssssssssssssscsesesescscscecessseeevens 67Hình 38 Kết qua xuất ra màn hình trong khi công cu crawl hoạt động - - -: 67
Trang 11CHƯƠNG 1 : TONG QUAN VE LUẬN VAN
1.1 Giới thiệu sơ lược tình hình TMĐTGiai đoạn 5 năm trở lại đây, tình hình ứng dụng TMĐT trong doanh nghiệpkhông chỉ còn tập trung tại các thành phố lớn mà đã mở rộng trên phạm vi cả nước.Nhiều mô hình kinh doanh mới, đa dạng đã hình thành và được doanh nghiệp vậnhành, triển khai
Gan 100% doanh nghiệp đã tô chức triển khai ứng dụng TMĐT ở nhiều quy môvà mức độ khác nhau Việc tham gia hoạt động TMĐT trên mạng xã hội của đại bộphận doanh nghiệp bán lẻ và người tiêu dùng cùng với việc ứng dụng các giải phápTMDT trên nên tang công nghệ di động cho thấy doanh nghiệp Việt Nam đã nhanhnhạy bắt kip các xu hướng mới về TMĐT của thé giới để phục vụ hiệu quả chohoạt động sản xuất kinh doanh của mình, nâng cao năng lực cạnh tranh
Ứng dụng TMĐT trong cộng đồng đã trở thành một trào lưu rộng khắp Năm2015, giá trị mua hàng trực tuyến của một người ước tính đạt khoảng 160 USD vàdoanh số TMĐT B2C đạt 4,07 ty USD
60/63 tỉnh, thành phố ban hành Kế hoạch phát triển TMĐT của địa phương nhằmtriển khai Quyết định 1073 cho thấy mức độ quan tâm cũng như hành động thiết
thực của các địa phương trong việc nỗ lực bắt kip với sự phát triển của lĩnh vực
tương đối mới mẻ này (Báo cáo TMĐT năm 2015)
Trang 12Phát triển hệ thông thu thập và lưu trữ dit liệu TMĐT dạng NoSOL
Số lượng website TMĐT đã được xác nhận thông báo, đăng ký
Với bất kỳ doanh nghiệp nào, hiểu được xu hướng phát triển của thị trường làchìa khóa quan trọng dé dẫn đến thành công, nhất là với các doanh nghiệp mà sựsinh tôn phụ thuộc hoàn toàn vào người dùng như trang web C2C Và cách tìmhiểu thị trường tốt nhất chính là thu thập và thống kê các mẫu tin quảng cáo khôngchỉ trên trang web của mình mà còn trên trang web của đối thủ Hiện nay, hau hếtcác doanh nghiệp C2C đều có bộ phận làm công việc nghiên cứu thị trường tuynhiên, họ không có một công cụ thật sự hiệu quả mà chỉ thu thập và thống kê băng
Trang 13tay, cùng với một số phan mém đơn giản như Microsoft Access, Microsoft Excel Với hàng trăm nghìn mẫu tin quảng cáo được đăng lên một trang web mỗi ngày,khối lượng công việc của các nhân viên nghiên cứu thị trường thật sự rất lớn vàphương pháp làm của họ rõ ràng không hiệu quả.
Đứng trước nhu cầu cần có một công cụ hiệu qua dé thu thập va phân tích dữliệu từ các website thương mại điện tử là rất lớn Tuy nhiên, việc thu thập nàykhông hé đơn giản vì các website này thường có các chính sách chống lại việc laydữ liệu này Từ đó tác giả đã quyết định chọn dé tài “Phát triển hệ thống thu thậpvà lưu trữ dữ liệu TMĐT dạng NoSQL” để làm luận văn cho mình
Đề tài này sẽ tìm hiểu các cách làm việc của các thư viện hỗ trợ crawler hiện nayvà lựa chọn 1 bộ thư viện phù hợp với mục đích nghiên cứu Tiếp theo sẽ xây dựngbộ công cụ giả lập hành vi khách hàng dựa trên thư viện đã chon lựa trước đó.
1.2 Ý nghĩa của luận văn1.2.1 Ý nghĩa khoa học
e Là bước đệm nghiên cứu tập hợp các công nghệ tiên tiến có khả năng đưacác nghiên cứu về phân tích thị trường thương mại điện tử phát triển hơn
nữa.
e Là nên tảng nghiên cứu và ứng dụng hệ thống thu thập và phân tích dữ liệutheo thời gian, có thể áp dụng trong nhiều lĩnh vực
1.2.2 Y nghĩa thực tiễnNgoài những ý nghĩa khoa học nêu trên, dé tài luận văn còn mang đến hai ýnghĩa thực tế sau:
e H6 trợ thông tin giúp cho doanh nghiệp kinh doanh, dau tư trở nên sángsuốt hơn, nhận dạng xu hướng thị trường tốt hơn Tiếp cận các phươngpháp phân tích thị trường thương mại điện tử một cách khoa học.
Trang 14Phát triển hệ thông thu thập và lưu trữ dit liệu TMĐT dạng NoSOL¢ Giúp các tô chức chính phủ đánh giá chính xác tình hình TMĐT của Việt
Nam để có chiến lược phát triển bền vững và hiệu quả.1.3 Mục tiêu, giới hạn và đối tượng nghiên cứu
1.3.1 Mục tiêu nghiên cứue Từ việc nghiên cứu các công trình khoa học liên quan, tác giả nhận thấy răng
giải quyết việc chống lại quá trình thu thập dữ liệu là vô cùng can thiết, vì nêukhông thu thập được dữ liệu thì việc phát triển hệ thống lưu trữ và thống kê dữliệu đều là dư thừa Từ đó mục tiêu của đề tài đặt ra là làm sao phát triển một hệthống thu thập dữ liệu gần giống nhất với hành vi duyệt web của con người nhấtnhăm đánh lừa các công cụ anti-crawling cũng như các quản trị viên
e Tối ưu bộ công cụ thu thập dữ liệu để tránh bị phát hiện bởi các hệ thông phòngchong crawler tự động cũng như từ các quản tri viên website.
1.3.2 Giới hạn nghiên cứu của dé tài.Đề tài này chỉ xoay quanh vấn đề phát triển hệ thống thu thập dữ liệu của cácwebsite TMĐT Các van dé khác bao gồm đánh giá độ tin cậy của dữ liệu thôngqua việc so sánh lệch dữ liệu hay đánh giá tiềm năng của các website thông quacác két quả so sánh, dé tài nay sẽ không đê cập dén.
1.3.3 Đối tượng nghiên cứu> Các định dạng và b6 cục của trang web TMDT chotot.vn dé có thé thu thập các
URL và sau đó là lẫy các dữ liệu từ các trang web này.> Các thư viện hỗ trợ việc thu thập dữ liệu hiện nay trên thế giới như: JSoup,
Spider, > MongoDB là một co sở dữ liệu NoSQL hỗ trợ đa nên tang, nó có thé chay trén
Windows, Linux và Mac Nó hỗ trợ hau hết các ngôn ngữ lập trình phô biếnnhư C#, Java, PHP, Javascript và các môi trường phát triển khác nhau
Trang 151.4 Câu trúc luận văne Chương 1: Tổng quan về báo cáo:
o Giới thiệu tóm tắt sơ lược nội dung yêu câu va độ cấp thiết của bài toán xâydựng công cụ crawler trong việc thu thập dữ liệu từ các trang web thương mại điệntử.
o Các đối tượng cần nghiên cứu.o Tóm lược lý do chon dé tài, mục tiêu cần phải thực hiện được của bài toán,các giới hạn, phạm vi, hướng tiếp cận của luận văn
o Giới thiệu về cau trúc luận văn.e Chương 2: Cơ sở lý thuyết và các công trình nghiên cứu liên quan
o Giới thiệu các công trình nghiên cứu liên quan đến đề tài.o Cách thức thu thập dữ liệu, các thư viện hỗ trợ
o Thu thập dữ liệuo Giới thiệu về dữ liệu lớn- Big Datao Kho chứa dt liệu
o Xử lý, phân tích dữ liệuo Trực quan hóa dt liệue_ Chương 3 : Phân tích và thiết kế hệ thong
o Phân tích dữ liệu từ các trang web thương mai điện tửo Xây dựng công cu crawler dữ liệu gia lập hành vi khách hange Chương 4: Thực nghiệm và đánh gia
o Đưa vào thử nghiệm công cụ crawler dữ liệuo Thu thập dữ liệu
e Chương 5: Kết luậno Kết quả đạt đượco Các hạn chê còn tôn đọng
Trang 16Phát triển hệ thông thu thập và lưu trữ dit liệu TMĐT dạng NoSOLo Đóng góp của dé tài
o Ý nghĩa khoa học va thực tiễne Phan cuôi cùng của bài báo cáo là danh mục tài liệu tham khảo va phan phụ lục.
Trang 17CHUONG 2 CƠ SỞ LÝ THUYET VA CAC CONG TRINH
NGHIEN CUU LIEN QUAN
2.1 Cac công trình nghiên cứu liên quana Trong một nghiên cứu của Alex Stolz và Martin Hepp với tên bài báo là
Towards Crawling the Web for Structured Data: Pitfalls of Common Crawlfor E-Commerce dén tir dai hoc Bundeswehr Munich, Duc Nghiên cứu đã chira rằng việc thu thập dữ liệu từ các site map do website thương mại điện tửcung cấp là không chính xác vì nó thiểu phần lớn các trang chỉ tiết của sảnphẩm Từ đó rút ra kết luận rằng quá trình thu thập dữ liệu từ các trang TMĐTkhông được dựa vào các sitemap được cung cấp bởi chính các website đó.b Một nghiên cứu khác đến từ Junghoo Cho Đại học California, Los Angeles và
Hector Garcia-Molina đến từ đại học Stanford đồng đứng tên cho một bài báonghién cứu có tên : Parallel Crawlers Bài nghiên cứu đã đưa ra giải pháp choviệc thu thập dữ liệu thông qua xử lý song song trong trường hợp dir việc cuaweb site cần lay tăng lên quá nhanh và quá lớn
c Bai báo của Sanjay Singh từ Manipal University mang tên Anti-ScrapingApplication Development đã đưa ra các cách khác nhau để chống lại việc thuthập dữ liệu.
o Black list : khi có phát hiện thu thập dữ liệu từ 1 IP nào đó thì người quản trisẽ đưa IP này vào danh sách IP bị cam và sẽ không có phép bat kỳ giao tiếpnào từ IP này đến website của mình
o Gray list: danh sách các IP có các hành động đáng ngờ khi truy cập đếnwebsite, nếu từ IP nay thao tác liên tục điền sai CAPTCHAs thì khi đó IPnày sẽ được đưa vào Gray list để theo dõi các sai phạm
Trang 18Phát triển hệ thông thu thập và lưu trữ dit liệu TMĐT dạng NoSOLo White list: Day là một danh sách các IP hoàn toàn bình thường và hợp pháp.
Từ đây web site chỉ việc căn cứ vào danh sách này để chấp nhận việc truycập.
Một kỹ thuật quan trọng khác là chi dia chỉ IP thành các bang nhỏ dựa vào từngkhu vựa khác nhau Từ các bảng này web site sẽ tiến hành lọc các IP thuộcblack list, gray list hay chưa xác định Chúng ta có thé chia nhỏ khu vực ra nếunhư số lượng truy cập website từ 1 khu vực nào đó rất lớn
Các kỹ thuật phát hiện xâm nhập còn đến từ:e Thong tin của trình duyệt
Hau hết các chương trình thu thập dữ liệu tự động thường không thé cungcấp các thông tin như phông chữ hệ thống chỉ tiết plugin trình duyệt nhưkhi dùng một trình duyệt nào đó Ngoài ra mỗi trình duyệt thường có cácđặc trưng rất độc đáo khó mà có thê làm giả Do đó chỉ cần xây dựng bộlọc để nhận các thông tin được cung cấp khi có giao tác duyệt web xảyra, nếu không thể cung cấp các thông tin trên thì lập tức được đưa vàogray list và buộc phải xác thực thông qua CAPTCHA_ nếu muốn vàowhite list
e Thường xuyên thay đối MarkupMarkup của một website nên được thường xuyên thay đối một các tựđộng nhưng không phải là thay đổi trên diện rộng hay toàn bộ cau trúcwebsite Hầu hết các chương trình thu thập dữ liệu dựa vào tên của cáclớp và id của các thẻ đánh dấu để xác định phan can thu thập dữ liệu.Thường xuyên thay đổi tên lớp và id của các phần khác nhau một cách tựđộng là cách được chứng minh là khác hiệu quả trong việc phá vỡ quátrình thu thập dữ liệu của chương trình Tuy nhiên việc thay đổi thườngxuyên cau trúc sẽ gây khó chịu cho nhưng người dùng thực
Trang 19Một phương pháp để ngăn chặn quá trình thu thập là trình bày các thôngtin như là một phan của hình ảnh, và không phải là văn bản dang text.Thông tin văn bản bình thường có thé được chuyển đổi sang hình ảnhtrên phía máy chủ và sau đó có thé được hiển thị đến người dùng Nhữngngười thu thập dữ liệu có thế dùng phần mềm Optical CharacterRecognition (OCR) để lấy được dữ liệu từ hình ảnh Tuy nhiên, phươngpháp hién thị thông tin dưới dạng hình ảnh không phải hiệu quả trongthời đại ngày ngày nay, bởi vì các thư viện OCR đã trở nên rất phát triển.Ngoài ra việc cố ý làm nhòe dữ liệu trong hình ảnh sẽ dẫn đến phiên toáitừ người sử dụng chân chính và có thé ảnh hưởng đến lượng truy cập củatrang web Dữ liệu còn có thé được trình bày như là các đoạn flash hoặcHTMLS canvas thay vì hình ảnh.
e Phân tích tan suấtĐây là phương pháp dựa vào số lần truy cập của khách đến trang web tạitừng thời điểm Khi đã có số lần truy cập thì một lần nữa các danh sáchđen, xám và trắng sẽ được sử dụng Tuy nhiên phương pháp này cũngkhông chính xác tuyệt đối vì việc truy xuất nhiều ít của người dùng tùythuộc vào nhu cau và nội dung của trang web tại thời điểm đó
e Phân tích lưu lượng dir liệuĐây là một phương pháp quan trọng được sử dung trong những năm ganđây Thực tế cho thấy rằng các hệ thống thu thập dữ liệu thường dùnggiải pháp thay đối IP liên tục hoặc dùng proxy dé tránh bi phát hiện Tuynhiên việc lưu lượng đữ liệu bi thu thập từ một nguon nào đó là khôngthé che giấu được Phương pháp được dé xuất là việc thu thập lưu lượngdữ liệu đi đến một đích nào đó, ở lần đầu tiên ta sẽ gom cum đữ liệu sauđó dùng biên rôi rạc Fourier đê làm giảm kích thước của mâu Tuy nhiên
Trang 20Phát triển hệ thông thu thập và lưu trữ dit liệu TMĐT dạng NoSOL
phương pháp này đòi hỏi các mẫu thử phải day đủ và phải được thu thậptrong một thời gian dài.
e Phan tích URLPhương pháp phân tích URL được viéng thăm cũng là một các phát hiệnxâm nhập Việc phân tích này dựa vào quá trình viếng thăm lặp di lặp lạimột URL nào đó cua trang web Hay các URL được duyệt theo một thứtự nhất định thì việc theo dõi đối tượng sẽ được thiết lập
e Honeypots và HoneynetsMột số công ty kinh doanh trong lĩnh vực mạng ví dụ như Amazon CloudFront và CloudFlare sử dụng một mạng lưới các honeypots, còn được gọilà honeynets hoặc honeyfarms khắp thế giới dé nam bắt thông tin về cáchệ thống thu thập, và chuyển tiếp thông tin này cho các ứng dụng của họtrên toàn thế giới qua bản cập nhật định kỳ hoặc các phương pháp khác.Các trang honeypot nhỏ có thé được triển khai trên các trang web dé pháthiện hoàn toàn tự động thu thập thông tin của các hệ thống thu thập dữliệu.
d Một số công cụ giúp thu thập dữ liệu từ các website:
> Winweb crawler
FMinerScreen ScraperOutWit HubHelium scraperVisual Web Ripper
Scraper Wiki
V VY VV VY WV Kimono Labs
Trang 21e Công trình nghiên cứu trong nước : Dé tài nghiên cứu khoa học của sinh viênkhoa Khoa học và Kỹ Thuật Máy Tính thuộc Đại Học Bách Khoa TP HCMnăm 2016 về phát triển hệ thống thu thập lưu trữ và thong kê dữ liệu của cácwebsite TMĐT ở Việt Nam.
> Thu thập dữ liệu
Kiến trúc thu thập dữ liệu của hệ thống:
website website website website
https://nhattao.com/ http:/www.vatgia.com/home http:/www.chotot.vn/ ¬
Crawler
ProcessMaster
Data Data Data Data
set N / set N / set N / set N /
Checking Data
Report Error i< Bad Data
Import to Data Warehouse
Hình 2 Kiến trúc hệ thông thu thập dữ liệuKiến trúc hệ thông gồm ba tầng căn bản:
e Crawler: Thu thập dữ liệu từ các website và lưu trữ thành một tập dữ liệue Kiểm tra dữ liệu crawl: Kiểm tra từng dữ liệu lấy được từ tang crawler có bị
sai lệch hay không (quá nhiều giá trị null liên tiếp trên một thuộc tính bấtkỳ) Nếu dữ liệu bị sai lệch quá nhiều trên một tập dữ liệu bất kỳ thì hệthông sẽ cảnh báo cho người vận hành biệt đê có thê điêu chỉnh lại việc
Trang 22Phát triển hệ thong thu thập và lưu trữ dữ liệu TMĐT dạng NoSOLcrawler và tự động xóa tập dt liệu này, ngược lại thì tập dữ liệu sẽ được đưaxuông tâng dưới đê thực hiện việc lưu trữ.
° Day dữ liệu vào kho: Dung dé thực hiện việc đưa dữ liệu vào trong kho chứadữ liệu lớn.
> Phân phối tác vụPhân phối tác vụ với RabbitMQ, RabbitMQ là một message broker (message-oriented middleware) sử dụng giao thức AMQP - Advanced Message QueueProtocol (Đây là giao thức phô biến, thực tế RabbitMQ hỗ trợ nhiều giao thức).RabbitMQ được lập trình bằng ngôn ngữ Erlang RabbitMQ cung cấp cho lập trìnhviên một phương tiện trung gian để giao tiếp giữa nhiều thành phân trong một hệthống lớn (ví dụ openstack) RabbitMQ sẽ nhận message đến từ các thành phânkhác nhau trong hệ thống, lưu trữ chúng an toàn trước khi day đến đích
Message broker
Exchangel j+
Hình 3 Mô hình làm việc cua RabbitMQ
Site A I8Ì—
> Kho chứa dit liệu
Kho chứa dữ liệu với Apache Hive, Apache Hive là một kho dir liệu (datawarehouse) hỗ trợ người sử dụng có thê dễ dàng hơn trong việc quản lý và truy vẫnđối với các tập dữ liệu lớn được lưu trữ trên các hệ thống lưu trữ phân tán
Trang 23(distributed storage) Hive được xây dựng dựa trên cơ sở cua Apache Hadoop, nócung cấp các tính năng chỉnh sau:
e Công cụ cho phép dễ dàng thực hiện tác vụ như trích xuất, vậnchuyền và lưu trữ đữ liệu
e_ Cơ chế để xử lý cho nhiều định dạng dữ liệu khác nhau.e Truy cập tới dữ liệu dang files được lưu trữ trực tiếp ở trong Apache
HDEFS hoặc đối với nhiều hệ thống lưu trữ dữ liệu khác như Apache
HBase.
e Thuc hiện query thông qua MapReduce.
Trang 24Phát triển hệ thong thu thập và lưu trữ dữ liệu TMĐT dạng NoSOL
> Xử lý, phân tích dữ liệu
Xứ lý, phân tích dữ liệu sử dụng Apache Spark, một framework tính toán trêncluster được phát triển bởi AMPLab tại Đại học California, Berkeley Sau đó,framework được Apache Software Foundation quan ly Nó ngược lại với mô hìnhhai giai đoạn trên đĩa cứng của MapReduce, mô hình nhiều giai đoạn trên bộ nhớtrong của Spark nhanh gấp 100 lần đối với một số ứng dụng Vì cho phép tải dữliệu lên RAM của cluster và truy van nó nhiều lần, Spark rất phù hợp dé chạy cácgiải thuật học máy.
Trang 25° Chống lại quá trình ngăn chặn việc thu thập dữ liệu của hệ thống gọi tắt làanti — “anti crawling”
e Xác thực độ chính xác cua dir liệu thu thập được từ các website TMDT.Dé giải bài toán thứ 1: Ayman Mohammed Mohammed đến từ IBM đã đưa ra mộtsố giải pháp dé chống lại quá trình anti crawling như sau :
o Cac website thường chan IP của server thu thập dữ liệu khi phát hiệnhành vi này, giải pháp đưa ra là sử dụng nhiều proxy để ấn IP thật củaserver đang thu thập dữ liệu
Trang 26Phát triển hệ thông thu thập và lưu trữ dit liệu TMĐT dạng NoSOLo Vượt qua xác thực CAPTCHA do phan lớn dịch vu web và trình duyệt
cho phép chúng ta không can xác thực bang CAPTCHA, và hau hếtCAPTCHA của các website TMĐT rất yếu
o Các website thường tao ra nhiều tài khoản đăng nhập hệ thống khác nhauđể cung cấp cho khách hàng, điều này sẽ gây phiền toán cho khách hàngđang sử dụng website Và để chống lại việc ngăn chặn này ta có thê dùngmột giải thuật dé tao hàng loạt các tài khoản khác nhau
2.2 Cách thức thu thập dữ liệu, phân loại website và các thư viện hỗ trợ2.2.1 Cách thức thu thập dữ liệu
Các dữ liệu hiển thị trên một trang web đều được biếu diễn bằng HTML.Vìthế, chúng ta sẽ dựa vào đoạn mã HTML của trang web đó để lấy nhữngthông tin mà ta can lay
Chúng ta sẽ phan loại website để lay dtr liệu làm 3 loại:e Website khi dùng phương thức HTTP GET sẽ lay được HTML có chứa tat
cả thông tin hién thị trên trang web.e Website khi dùng phương thức HTTP GET sẽ lấy được HTML chỉ chứa
các đoạn mã javascript để sinh ra HTML khi được tải bằng trình duyệt.e Website khi dùng phương thức HTTP GET sẽ lấy được HTML có một
phần chứa một số thông tin được hiện thị trên website và phần còn lại sẽchứa javascript dé sinh ra HTML khi được tải bằng trình duyệt
2.2.2 Phân loại website cần thu thập dữ liệuĐề thuận tiện ta sẽ quy ước các loại website để lay dir liệu từ trên xuống làloại I, loại I, loại III] Chúng ta sẽ cùng nói qua cách xử ly trên từng loại:e© Loại I: Trong 3 loại website dé lay dữ liệu thì loại I là loại co bản nhất và
dễ dàng lay dir liệu nhất Ta chi cần dùng HTTP GET để lay HTML và layra những thông tin năm trên đó Việc phân tích HTML để có thê lẫy chính
Trang 27e Loại II: Day là một loại website vô cùng phức tạp dé xây dựng Và hau hếtcác website mới được xây dựng déu áp dụng mô hình này dé xây dựng Cácwebsite này đều có Web-API vô cùng mạnh mẽ để tương tác với cơ sở dữliệu Nhìn chung có hai cách để lay được di liệu của loại website này.Thứ nhất là đọc hiểu cấu trúc mã nguồn dé tìm ra Web-API và dựa vào đólay được thông tin lưu trữ trong database Đối với cách thức này, thời gianlay dữ liệu khá nhanh vi tốc độ truy xuất database dựa vào Web-API đãđược tối ưu Nhưng hạn chế của việc làm này là cần phải có kiến thức khárộng đối với các nên tảng web, và có thé sẽ không thé tìm được Web-APInếu trang web có sử dụng các tool dé rút gon source code (minification).Thứ hai là giả lập browser dé sinh ra HTML chứa thông tin cần lay Và từđó, sử dụng lay dữ liệu như loại I Giải pháp này giúp ta có thé dé dang lấyđược thông tin mà không cần quá nhiều hiểu biết về các nền tảng web,đồng thời có thé xử lý được khi trang web có sử dụng các tool để rút gọnsource code (minification) Tuy nhiên, hạn chế của cách này là thời gian vàtài nguyên máy dé lay dữ liệu tiêu tốn nhiều hơn rất nhiều lần so với cáchthứ nhất, vì phải giả lập browser để chạy.
e Loại III: Đây là một loại website kết hợp giữa loại I và loại II Nên cách xửly sẽ dùng các phương pháp nêu trong loại I, loại II dé xử lý
2.2.3 Một vài thư viện hỗ trợ xây dựng công cu crawler
Thư viện Jsoupa Giới thiệu sơ lược về parser và công cụ Jsoup
e Parsing là một cách dé lay được thông tin và dữ liệu trên một trang webdựa vào cách parse đoạn mã HTML của trang web đó lưu thành mộtcây dữ liệu Và chúng ta có thé dựa vào cây dữ liệu đó lay ra thông tinmà ta cân lấy trên trang web đó
Trang 28Phát triển hệ thông thu thập và lưu trữ dit liệu TMĐT dạng NoSOL
e Jsoup là một thư viện parser hỗ trợ đắc lực từ việc lay dữ liệu trên trangweb với các tính năng chính: xử lý được các cau trúc HTML phức taplay từ trang web va từ đó tạo ra một kết qua phân tích (parse) rõ rànggiúp chúng ta lay những thành phan dữ liệu trong một trang web dựavào đoạn mã HTML của trang web đó Ngoài ra, nó hỗ trợ mạnh mẽtrong việc xử lý các HTML phức tạp hoặc không rõ ràng.
b Mô hình đối tượng của một Document trong JsoupDocument trong Jsoup bao gồm các thành phan HTML là Elements vàTextNode Các chuỗi thừa kế: Document được thừa kế từ Element vàElement được thừa kế từ Node Mỗi Element bao gồm một số lượng cácNode con và có một Element khác làm lớp cha (parent) của nó Và ngoàira mỗi Element còn cung cấp danh sách Filter dành riêng cho các lớp concủa no (child elements).
c Các giải pháp xử lý input dé parse một Document trong Jsoupe© Parse một Document với đầu vào là một chuỗi ki tự
Vấn dé đưa ra: Chúng ta có đầu vào HTML hiện đang là một kiểuString Và chúng ta muốn parse đoạn string HTML đó để lay ra dữ liệumà chúng ta can, hoặc dé kiểm tra thử nó có đúng dạng hay chưa, hoặcchỉnh sửa đoạn HTML đó Đoạn String HTML đó có thể đến từ cácsource code của các trang web.
Giải pháp xử ly: Sử dụng phương thức static Jsoup.parse(Stringhtml), hoặc Jsoup.parse(String html, String baseUri) Vi du:
String html = <html><head><title>Firstparse</title></head>" +"<body><p>Parsed HTML into a doc.</p></body></html>";Document doc = Jsoup.parse(html);
Trang 29Mô tả quá trình xu lý: Phương thức parse(String html, StringbaseUri) parse input HTML vào một Document mới Thông sốbaseURI được sử dụng dé chuyển đối những URL quan hệ thành URLtuyệt đối, và nên được gan bang URL nơi tài liệu được lấy Nếu nhưkhông duoc, hoặc nếu như chúng ta biết HTML đó có một Element cosở, chúng ta có thé sử dụng phương thức parse(String html).
Khi chúng ta đã có một Document, chúng ta có thé lay được thông tinbăng cách sử dụng những hàm thích hợp trong Document, cũng như cácElement và Node của nó.
e Parse một đoạn than HTMLVan dé dua ra: Chúng ta có một đoạn thân HTML (ví dụ: một div chứamột cặp tag p) mà chúng ta muốn parse
Giải pháp xử lý: Sử dụng phương thức
Jsoup.parseBodyFragment(String html), vi dụ:String html = "<div><p>Lorem ipsum.</p>";Document doc = Jsoup.parseBodyFragment(html);Element body = doc.body();
Mô ta quá trình xu lý: Phuong thức parseBodyFragment tạo mộtDocument trống, và nhập mã HTML parse được vào body Element.Nếu chúng ta sử dụng phương thức Jsoup.parse(String html) thôngthường, chúng ta cũng sẽ có được kết quả tương tu, nhưng việc xeminput như là một đoạn thân rõ ràng đảm bảo được bất cứ đoạn HTMLnào được cung cap bởi người dùng cũng sẽ được parse vào Element.
Trang 30Phát triển hệ thông thu thập và lưu trữ dit liệu TMĐT dạng NoSOL
Phương thức Document.body() lay được những Element con trongElement của Document Nó cũng gidng với phương thức
doc.eetElementsBy Tag( body”).e Tai một Document từ một URL
Vấn dé dua ra: Chúng ta can lay va parse một HTML Document từweb, va tim dt liệu bên trong nó.
Giải pháp xu ly: Sử dụng phương thức Jsoup.connect(String url), vi du:Document doc = Jsoup.connect("http://example.com/").getQ);
String title = doc.titleQ;Mô ta quá trình xử lý: Phương thức connect(String url) tao một kết nốimới, và getQ lay va parse một file HTML Nếu như có lỗi xuất hiệntrong quá trình lay một URL, sẽ có một IOException được quăng ra,trong trường hợp này ta cần xử lý IOException thích hợp Connectioninterface được thiết kế cho việc chaining method dé xây dựng một yêucầu cụ thể:
Document doc = Jsoup.connect("http://example.com").data("query", "Java")
.userA gent("Mozilla").cookie("auth", "token").timeout(3000)
-post();
Phương thức nay hỗ trợ web URL (giao thức http va https), nếu chúngta cần phải load dữ liệu từ một file, sử dụng phương thức parse(File in,String charsetName) thay cho phương thức nay.
e Tai một Document tu tép tin
Trang 31Vấn đề đưa ra: Chúng ta có một tệp tin chứa dữ liệu HTML mà chúngta cần tải và parse dé có thé trích xuất thong tin từ nó.
Giải pháp xu lý: Sử dụng phương thức static Jsoup.parse(File in, StringcharsetName, String baseUri), vi dụ:
File input = new File("/tmp/input.html");Document doc = Jsoup.parse(input, "UTF-8",
"http://example.com/");Mô ta quá trình xu ly: Phuong thức parse(File in, String charsetName,String baseUri) tải va parse một file HTML Nếu như có lỗi xuất hiệntrong lúc tải file, sẽ có một IOException được quăng ra, ta cần xử lýIOException này một cách thích hợp.
Thông số baseUri được sử dụng bởi parser để xử lý những URL quan
hệ trong Document trước khi một <base href> Element được tìm thấy
Nếu như điều đó không quan trọng với chúng ta, chúng ta có thê truyềnmột chuỗi rỗng
Có một phương thức tương tự parse(File in, String charsetName) mà sửdụng đường dan của file như là một baseUri Phuong thức này rất hữuích nếu như chúng ta làm việc trên một trang web hệ thống file cục bộvà đường link của nó cũng trên file system.
e Các giải pháp xử lý trích xuất dit liệu dé parse một Document trongJsoup
Sử dung những phương thức DOM để thao tác trên Document Van délà chúng ta có một đoạn HTML mà chúng ta muốn trích xuất dữ liệu.Chúng ta đã biết cau trúc của một HTML Document
Trang 32Phát triển hệ thông thu thập và lưu trữ dit liệu TMĐT dạng NoSOL
Giải pháp xử lý: Sử dụng một phương thức kiểu DOM có sẵn sau khiparse HTML vào một Document
File input = new File("/tmp/input.html");
Document doc = Jsoup.parse(input, "UTF-8",
"http://example.com/");Element content = doc.getElementBylId("content");Elements links = content.getElementsByTag("a");for (Element link : links) {
String linkHref = link.attr("href");String linkText = link.textQ);j
M6 ta quá trình xử lý: Những Element cung cấp một lượng các phươngthức kiểu DOM để tìm những Element, và trích xuất và thao tác trênnhững dữ liệu của nó Những phương thức lay dữ liệu DOM hoạt độngtùy theo ngữ cảnh: nếu được gọi ở một Document cha, các phương thứcsẽ tìm những Element phù hợp ở Document đó, còn nếu gọi ở Elementcon, các phương thức sẽ tìm những Element ở Element con đó Băngcách này, chúng ta có thé sàng lọc dữ liệu
Một vai ví dụ tìm kiếm kiếm Element và thao tác trên HTML:getElementBylId(String id)
getElementsByTag(String tag)getElementsByClass(String className)append(String html)
prepend(String html)appendText(String text)
Trang 33prependText(String text)appendElement(String tagName)e Sử dụng selector-syntax dé tìm kiếm các Element
Vấn dé đưa ra: Chúng ta muốn tìm hoặc thao tác các Element băng cáchsử dung CSS hoặc các selector syntax giống jquery
Giai phap xu ly: Su dung cac phuong thuc Element.select(Stringselector) va Elements.select(String selector):
File input = new File("/tmp/input.htm1");// a with href
Document doc = Jsoup.parse(input, "UTF-8",
"http://example.com/"); Elements links = doc.select("a[href]");// img with src ending png
Elements pngs = doc.select("img[src$=.png]");
// div with class=mastheadElement masthead = doc.select("div.masthead").firstQ);// direct a after h3
Elements resultLinks = doc.select("h3.r > a");M6 tả quá trình xử lý: Những Element của Jsoup hỗ trợ selector syntaxkiểu giống như CSS (hoặc jquery) dé tìm kiếm những Element phù hợp,nhờ đó nó cho phép thực hiện những truy vẫn khó Phương thức selectcó san trong Document, Element hoặc trong Elements, là một phươngthức theo ngữ cảnh, do đó chúng ta có thé lọc thông qua việc chonnhững Element cụ thể hoặc bởi chaining những lời gọi select
Select trả về một danh sách các Element, cung cấp một lượng phươngthức dé trích xuất và thao tác trên kết quả
Trang 34Phát triển hệ thông thu thập và lưu trữ dit liệu TMĐT dạng NoSOL
e Trich xuất thuộc tinh (attribute), dữ liệu text và HTML từ nhữngElement
Van dé dua ra: Sau khi parse một Document, và tìm một số Element,chúng ta có thé sẽ muốn lay những dữ liệu bên trong các Element này.Giải pháp xử lý: Dé lấy giá trị của một attrubute, sử dụng phương thứcNode.attr(String key) Với text của một Element (cùng với các con củanó), sử dụng Element.text() Với HTML, sử dụng Element.html(), hoặcNode.outerHtml() Ví dụ:
String html = "<p>An <ahref='http://example.com/'><b>example</b></a> link.</p>";Document doc = Jsoup.parse(html);
Element link = doc.select("a").firstQ;String text = doc.body().textQ; // "An example link"String linkHref = link.attr("hret");
// "http://example.com/"String linkText = link.textQ); // "example"String linkOuterH = link.outerHtml();// "<a href="http://example.com"><b>example</b></a>"
String linkInnerH = link.html(); // "<b>example</b>"e Xu lý các URL
Van đề đưa ra: Chúng ta có một HTML chứa những URL quan hệ cầnphải được chuyên đôi thành các URL tuyệt đối
Giải pháp xử lý: Dam bảo chắc rang ta định rõ một base URL khi parse.Sử dụng tiền t6 abs: attribute dé phân giải một URL tuyệt đối từ mộtattribute
Trang 35Document doc = Jsoup.connect("http://jsoup.org").getQ);Element link = doc.select("a").firstQ;
String relHref = link.attr("href"); // == "/"String absHref = link.attr("abs:href"); // "http://jsoup.org/"Trong các HTML Element, những URL thường được viết dưới dạngquan hệ mà liên quan đến địa chỉ của Document:
<a href="/download"> </a> Khi chúng ta sử dụng phương thứcNode.attr(String key) để lấy một attribute href, nó sẽ trả về kết quả như
đã được đặc tả trong HTML, nguôn.Thư viện HTMLUnit
Đây là một thư viện "GUI-Less browser for Java programs" dùng để mô hìnhtài liệu HTML, là một trong những bộ Web Automation Testing tốt, với cáctính năng:
e API của nó khá mạnh, cho phép chúng ta kích hoạt trang web, điền thôngtin form, submit form, click link
e Hỗ trợ tốt Javascript và cả những thư viện AJAX phức tạp.e Có thể giả lập được Internet Explorer, Firefox và Chrome.Mot vài thao tác cơ bản của HTML Unit như sau:
e Tạo một web client và tải trang chu từ trang web Sau đó xác thực tinhđúng đắn của tiêu dé trang web Phương thức getPage() có thé trả về nhiềukiểu trang dựa trên loại nội dung của dữ liệu trả về Trong trường hợp nàyta mong đợi kiểu nội dung text/html nên ta ép kết quả thành kiểu HtmlPage
public void homePage() throws Exception {final WebClient webClient = new WebClient();
Trang 36Phát triển hệ thông thu thập và lưu trữ dit liệu TMĐT dạng NoSOL
jtry (final WebClient webClient = new WebClient()) {
final HtmlPage page =webClient.getPage("http://htmlunit.sourceforge.net");Assert.assertEquals("HtmlUnit - Welcome topage.getTitleText());
final String pageAs Xml = page.asXml();Assert.assertTrue(pageAsXml.contains("<bodyclass=\"composite\">"));
final String pageAsText = page.asText();Assert.assertTrue(pageAsText.contains("Support for theHTTP and HTTPS protocols"));
webClient.getPage("http://htmlunit.sourceforge.net");Assert.assertEquals("HtmlUnit - Welcome topage.getTitleText());
HtmlUnit".
Trang 37e Khi đã tham khảo đến HtmlPage, ta có thể tìm kiếm cho một HtmlElementcụ thé bằng cách dùng phương thức get hoặc sử dụng XPath.
public void xpath() throws Exception {try (final WebClient webClient = new WebClient()) {
final HtmlPage page =webClient.getPage("http://htmlunit.sourceforge.net");//get list of all divs
final List<?> divs = page.getBy XPath("//div");//get div which has a 'name' attribute of 'John' final HtmlDivision div= (HtmlDivision)
page.getBy XPath("//div[(@name='John']").get(0);
je Dién va submit form
public void submittingForm() throws Exception {try (final WebClient webClient = new WebClient()) {
// Get the first pagefinal HtmlPage pagel = webClient.getPage("http://some_url");// Get the form that we are dealing with and within that
// form, find the submit button and the field that we want// to change.
final HtmlForm form = pagel.getFormByName("myform");final HtmlSubmitInput button =
form.getInputByName("submitbutton");
Trang 38Phát triển hệ thông thu thập và lưu trữ dit liệu TMĐT dạng NoSOL
final HtmlTextInput textField = form.getInputByName("userid");// Change the value of the text field
textField.setValueAttribute("root");// Now submit the form by clicking the button and get// back the second page.
final HtmlPage page2 = button.click();
jThu vién PhantomjsPhantomjs là một trình duyệt chính xác hon phantomjs là một “headlessbrowser” Khác với các trình duyệt thông thường chúng ta hay sử dụng nhưChrome, Firefox chúng ta sẽ thực hiện trực tiếp các thao tác với websitethông qua giao diện được hiển thị bởi các trình duyệt này thì với phantomjschú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
Một số demo:a Mặc dù không trực tiếp nhìn được giao diện của website nhưng phantomjscó thé chụp lại ảnh giao diện thông qua đó chúng ta có thé kiểm tra được giaodiện của website Sau đây sẽ là demo nhỏ về hoạt động truy cập và chụp ảnhwebsite của phantomjs:
BI: Tao file sample.js với cấu trúc như sau:
Trang 39Hình 6 Vi dụ về chức năng load web site của phantomJSB2: Gõ lệnh sau ở cmd: phantomjs sample.js http://google.com pageRenderTrong đó:
e google.com sẽ là website chúng ta truy cậpe pageGender là tên file ảnh chụp lai website
Sau khi chạy lệnh ở trên chúng ta sẽ được kết quả như sau :Cmd: Hiền thị dòng chữ: Image render is done!
Folder chứa file sample.js có file ảnh chụp website như sau: