1. Trang chủ
  2. » Luận Văn - Báo Cáo

Phát triển hệ thống thu thập và lưu trữ dữ liệu tmđt dạng nosql

79 23 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 79
Dung lượng 1,93 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

• Honeypots và Honeynets Một số công ty kinh doanh trong lĩnh vực mạng ví dụ như Amazon Cloud Front và CloudFlare sử dụng một mạng lưới các honeypots, còn được gọi là honeynets hoặc hone

Trang 1

BÙI XUÂN GIANG

3+È775,ӆ1+ӊ7+Ӕ1*7+87+Ұ3 9¬/Ѭ875Ӳ'Ӳ/,ӊ870Ĉ7'Ҥ1*1RSQL

Chuyên ngành : +Ӌ7KӕQJ7K{QJ7LQ4XҧQ/ê

Mã sӕ 60 34 04 05

/8Ұ19Ă17+Ҥ&6Ƭ

73+Ӗ&+Ë0,1+WKiQJ12 QăP 2017

Trang 2

&iQEӝKѭӟQJGүQNKRDKӑF 3*676ĈһQJ7UҫQ.KiQK

*KLU}KӑWrQKӑFKjPKӑFYӏ YjFKӳNê &iQEӝFKҩPQKұQ[pW 76/r/DP6ѫQ

*KLU}KӑWrQKӑFKjPKӑFYӏYjFKӳNê &iQEӝFKҩPQKұQ[pW 761JX\ӉQ7XҩQĈăQJ

*KLU}KӑWrQKӑFKjPKӑFYӏYjFKӳNê /XұQYăQWKҥFVƭÿѭӧFEҧRYӋWҥLTrѭӡng Ĉҥi hӑc Bách Khoa, ĈHQG Tp HCM ngày 29 tháng 12 QăP201 Thành phҫn Hӝi ÿӗng ÿinh giá luұn văn thҥc sƭ gӗm: (Ghi U}KӑWrQKӑFKjPKӑFYӏcӫa Hӝi ÿӗng chҩm bҧo vӋ luұn văn thҥc sƭ) 1 7675Ҫ10,1+48$1*

2 76/Ç/$06Ѫ1

3 761*8<ӈ17+$1+%Î1+

4 761*8<ӈ178Ҩ1ĈĂ1*

5 TS PHAN TRONG NHÂN

Xác nhұn cӫa Chӫ tӏch Hӝi ÿӗng ÿiQh giá LV và 7UѭӣQJKhoa quҧQ lý chuyên ngành sau khi luұn văn ÿã ÿѭӧc sӱa chӳa (nӃu có)

&+Ӫ7ӎ&++Ӝ,ĈӖ1* 75ѬӢ1*.+2$.+ & KTMT

Trang 3

+ӑWrQKӑFYLrQBùi Xuân Giang MSHV: 7141135

1Jj\WKiQJQăPVLQK29/07/1984 1ѫLVLQK TP HCM

Ngành: +ӋWKӕQJWK{QJWLQTXҧQOê 0mVӕ : 60 34 04 05

I 7Ç1Ĉӄ7¬,3KiWWULӇQKӋWKӕQJWKXWKұSYjOѭXWUӳGӳOLӋX70Ĉ7GҥQJ1R64/

II 1+,ӊ09Ө9¬1Ӝ,'81*

;k\GӵQJӭQJGөQJJL~SKӛWUӧWKXWKұSGӳOLӋXFӫDFiFWUDQJZHEWKѭѫQJPҥLÿLӋQWӱWӯ ÿyOjPWLӅQÿӅFKRFiFF{QJFөSKkQWtFKYjWUtFK[XҩWWK{QJWLQ

 &jLÿһWFѫVӣGӳOLӋX0RQJR'%ÿӇOѭXWUӳWRjQEӝGӳOLӋXWKXWKұSÿѭӧFӣGҥQJ1R64/ .

III NGÀY GIAO 1+,ӊ09Ө : 10/07/2017

IV 1*¬<+2¬17+¬1+1+,ӊ09Ө:03/12/2017

V &È1%Ӝ+ѬӞ1*'Ү1 : 3*676ĈһQJ7UҫQ.KiQK

Tp HCM, ngj\WKiQJQăP.

&È1%Ӝ+ѬӞ1*'Ү1

+ӑWrQYjFKӳNê

75ѬӢ1*.+2$.+ .707

+ӑWrQYjFKӳNê

Trang 4

Tôi xin tỏ lòng kính trọng và biết ơn sâu sắc đối với thầy PGS.TS Đặng Trần Khá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 khoa học cần 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ả thầy cô giảng dạy lớp cao học khóa

2014 đã cung cấp kiến thức và kinh nghiệm trong quá trình học tập để giúp tôi hoàn thiện Luận văn

Tôi hy vọng đề 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 cầu thu thập dữ liệu của các trang web thương mại điện tử, nhằm mục đích riêng của mình có thể giảm bớt thời gian tìm hiểu từ đầu Tôi cũng mong các bạn

có thể phát triển và hoàn thiện các phần còn thiếu sót của đề tài này

Trang 5

Trong đề 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ục tiê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 tổng quan về thị trường thương mại điện tử từ đó đưa ra quy ế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 đề 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 đề

c ập

Ch ương 3 : Luận văn tập trung vào trình bày cơ sở lý thuyết để hiện thực mục tiêu

đã đề ra, bao gồm các thư viện thu thập dữ liệu, các thức phân phối tác vụ thu thập dữ

li ệu đến các máy con, dữ liệu lớn và hệ quản trị cơ sở dữ liệu lớn NoSQL

Chương 4 : Dựa trên các nghiên cứu trong giai đoạn 3 này, tôi thực hiện phân tích

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 bằng 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 đề tài và hướng mở rộng của hệ thống

Trang 6

goal in phases corresponding to the chapters presented below:

Chapter 1: An overview of the e-commerce market from which to make the decision to get data from this source is necessary and important

Chapter 2: After defining a clear goal I will define the scope of the research as well as the scientific meaning and practical meaning of the thesis

Chapter 3: Thesis focuses on presenting a theoretical basis for the realization of the objectives, including data collection libraries, task distributions, data collection to subsystems, data Large and large database management system NoSQL

Chapter 4: Based on the research in this phase 3, I perform system analysis and design Then, I implemented reality and tested the system by crawling active ecommerce sites

Finally, chapter 5 presents the results of the thesis, the contribution of the topic and the direction of the extension of the system

Trang 7

L ỜI CAM ĐOAN

Tôi xin cam đoan số liệu và kết quả nghiên cứu trong luận văn này là trung thực

M ọ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 Xuân Giang

Trang 8

M ỤC LỤC

CHƯƠNG 1 : TỔNG QUAN VỀ LUẬN VĂN 4

1.1 Giới thiệu sơ lược tình hình TMĐT 4

1.2 Ý nghĩa của luận văn 6

1.2.1 Ý nghĩa khoa học 6

1.2.2 Ý nghĩa thực tiễn 6

1.3 Mục tiêu, giới hạn và đối tượng nghiên cứu 7

1.3.1 Mục tiêu nghiên cứu 7

1.3.2 Giới hạn nghiên cứu của đề tài 7

1.3.3 Đối tượng nghiên cứu 7

1.4 Cấu trúc luận văn 8

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT VÀ CÁC CÔNG TRÌNH NGHIÊN CỨU LIÊN QUAN 10

2.1 Các công trình nghiên cứu liên quan 10

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ợ 19

2.2.1 Cách thức thu thập dữ liệu 19

2.2.2 Phân loại website cần thu thập dữ liệu 19

2.2.3 Một vài thư viện hỗ trợ xây dựng công cụ crawler 20

2.3 Giới thiệu về dữ liệu lớn- Big Data 37

2.4 Kho chứa dữ liệu 40

2.4.1 Khái quát 40

2.4.2 Tại sao lại chọn MongoDB? 41

2.4.3 Kiến trúc tổng quát 41

2.4.4 Cơ chế hoạt động chi tiết của MongoDB 43

CHƯƠNG 3 PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 55

3.1 Nghiệp vụ hệ thống 55

Trang 9

3.2 Kiến trúc hệ thống thu thập dữ liệu 57

3.2.1 Kiến trúc hệ thống thu thập dữ liệu dạng 1 57

3.2.2 Kiến trúc hệ thống thu thập dữ liệu dạng 2 59

CHƯƠNG 4 THỰC NGHIỆM VÀ ĐÁNH GIÁ 60

4.1 Cài đặt và kiểm thử công cụ thu thập dữ liệu dạng 1 60

4.2 Đặc điểm nổi bật của công cụ thu thập dữ liệu dạng 1 64

4.3 Cài đặt và kiểm thử công cụ thu thập dữ liệu dạng 2 65

CHƯƠNG 5 KẾT LUẬN 68

Trang 10

Hình 1 : Báo cáo s ố lượng website TMĐT trong 3 năm gần đây (BC của Bộ Công

Thương) 5

Hình 2 Ki ến trúc hệ thống thu thập dữ liệu 14

Hình 3 Mô hình làm vi ệc của RabbitMQ 15

Hình 4 Ki ến trúc Hive 17

Hình 5 Ch ạy ứng dụng Spark trên YARN trong chế độ cluster 18

Hình 6 Ví d ụ về chức năng load web site của phantomJS 32

Hình 7 Hình ảnh trang web sẽ được load bởi PhantomJS 33

Hình 8 M ột demo về giả lập trình duyệt trên Iphone 34

Hình 9 Hình ảnh trang web được giả lập load trên IOS 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 39

Hình 12 Ví d ụ về MongoDB document 42

Hình 13 So sánh gi ữa RDBMS và MongoDB 42

Hình 14 So sánh Table v ới Collection 43

Hình 15 Mongos 44

Hình 16 Các b ản sao dữ liệu trong một shard 45

Hình 17 : 4 kho ảng cho 4 shard [a,f), [f,n), [n,t), [t,{) 45

Hình 18 Gi ới hạn lại khoảng cho shard 1 sang shard 2 46

Hình 19 Chuy ển dữ liệu sang shard tiếp theo 47

Hình 20 Thêm m ới shard rồi chia đều dữ liệu 48

Hình 21 Không liên ti ếp các khoảng cho phép ta lấy ra 49

Hình 22 Chuy ển 100GB của mỗi shard ném vào shard 5 50

Hình 23 Chia m ột chunk ra thành hai 52

Hình 24 N ếu cần bằng real time, sẽ có những tài 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 56

Hình 26 Các thành ph ần kiến trúc của hệ thống thu thập dữ liệu dạng 1 57

Hình 27 Mô hình Use Case Diagram c ủa công cụ dạng 1 58

Hình 28 Mô hình ki ến trúc công cụ thu thập dữ liệu dạng 2 59

Hình 29 Giao di ện nhập URL website 60

Hình 30 Giao di ện nhập category trên web Admin 61

Hì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 Hàm x ử lý Scroll view ngẫu nhiên và xử lý giản cách theo thời gian 65

Hình 36 Các 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 để khởi chạy công cụ 67

Hình 38 K ết quả xuất ra màn hình trong khi công cụ crawl hoạt động 67

Trang 11

CHƯƠNG 1 : TỔNG QUAN VỀ LUẬN VĂN

1.1 Giới thiệu sơ lược tình hình TMĐT

Giai đoạn 5 năm trở lại đây, tình hình ứng dụng TMĐT trong doanh nghiệp khô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ận hành, triển khai

Gần 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áp TMĐT trên nền tảng công nghệ di động cho thấy doanh nghiệp Việt Nam đã nhanh

nhạy bắt kịp các xu hướng mới về TMĐT của thế giới để phục vụ hiệu quả cho

hoạ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ăm

2015, 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 tỷ 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ằm triể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 kịp 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 12

Hình 1 : Báo cáo s ố lượng website TMĐT trong 3 năm gần đây (BC của Bộ Công Thương)

Trong số các loại hình website thương mại điện tử đang phát triển tại Việt Nam, các trang web của doanh nghiệp bán hàng cho người tiêu dùng (business-to-customer - B2C) đang chiếm ưu thế lớn Tuy nhiên, với xu hướng tiêu dùng thông minh hơn, tiết kiệm hơn, nhiều người dùng đang tìm đến các mặt hàng đã dùng qua (second hand) với giá rẻ hơn mà chất lượng vẫn không thua kém hàng mới Vì vậy, các trang web cho phép người dùng đăng tin quảng cáo hàng của mình (customer-to-customer - C2C) đang ngày càng gia tăng quy mô của mình và đe dọa đến các website B2C Khoảng 20 website C2C lớn ở Việt Nam được nhiều người tin dùng như chotot.vn, vatgia.com, batdongsan.com.vn,…

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ẫ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ìm

hiể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ông

chỉ trên trang web của mình mà còn trên trang web của đối thủ Hiện nay, hầu hết các doanh nghiệp C2C đều có bộ phận làm công việc nghiên cứu thị trường, tuy

Trang 13

tay, cùng với một số phần 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 quả để thu thập và 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ày khô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 lấy

dữ liệu này Từ đó tác giả đã quyết định chọ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” để 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 nay

và 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ựng

bộ công cụ giả lập hành vi khách hàng dựa trên thư viện đã chọn lựa trước đó

1.2 Ý nghĩa của luận văn

• Hỗ trợ thông tin giúp cho doanh nghiệp kinh doanh, đầu tư trở nên sáng

suốt hơn, nhận dạng xu hướng thị trường tốt hơn Tiếp cận các phương pháp phân tích thị trường thương mại điện tử một cách khoa học

Trang 14

• 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ứu

• 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 cần thiết, vì nếu khô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ất

nhằm đánh lừa các công cụ anti-crawling cũng như các quản trị viên

• 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òng

chống crawler tự động cũng như từ các quản trị viên website

1.3.2 Giới hạn nghiên cứu của đề 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ác website TMĐT Các vấn đề khác bao gồm đánh giá độ tin cậy của dữ liệu thông qua việc so sánh lệch dữ liệu hay đánh giá tiềm năng của các website thông qua các kết quả so sánh, đề tài này sẽ không đề cập đến

1.3.3 Đối tượng nghiên cứu

 Các định dạng và bố cục của trang web TMĐT chotot.vn để 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 cơ sở dữ liệu NoSQL hỗ trợ đa nền tảng, nó có thể chạy trên Windows, Linux và Mac Nó hỗ trợ hầu hết các ngôn ngữ lập trình phổ biến như C#, Java, PHP, Javascript và các môi trường phát triển khác nhau

Trang 15

1.4 Cấu trúc luận văn

• 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 và độ cấp thiết của bài toán xây

dựng công cụ crawler trong việc thu thập dữ liệu từ các trang web thương mại điện

tử

o Các đối tượng cần nghiên cứu

o Tóm lược lý do chọn đề 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ề cấu trúc luận văn

• 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ệu

o Giới thiệu về dữ liệu lớn- Big Data

o Kho chứa dữ liệu

o Xử lý, phân tích dữ liệu

o Trực quan hóa dữ liệu

• Chương 3 : Phân tích và thiết kế hệ thống

o Phân tích dữ liệu từ các trang web thương mại điện tử

o Xây dựng công cụ crawler dữ liệu giả lập hành vi khách hàng

• Chương 4 : Thực nghiệm và đánh giá

o Đưa vào thử nghiệm công cụ crawler dữ liệu

o Thu thập dữ liệu

• Chương 5 : Kết luận

o Kết quả đạt được

o Các hạn chế còn tồn đọng

Trang 16

o Đóng góp của đề tài

o Ý nghĩa khoa học và thực tiễn

• Phần cuối cùng của bài báo cáo là danh mục tài liệu tham khảo và phần phụ lục

Trang 17

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT VÀ CÁC CÔNG TRÌNH

NGHIÊN CỨU LIÊN QUAN

2.1 Các công trình nghiên cứu liên quan

a 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 Crawl for E-Commerce đến từ đại học Bundeswehr Munich, Đức Nghiên cứu đã chỉ

ra 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 chi tiết của sản

phẩ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ĐT khô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áo nghiên cứu có tên : Parallel Crawlers Bài nghiên cứu đã đưa ra giải pháp cho

việc thu thập dữ liệu thông qua xử lý song song trong trường hợp dữ việc của web site cần lấy tăng lên quá nhanh và quá lớn

c Bài báo của Sanjay Singh từ Manipal University mang tên Anti-Scraping Application Development đã đưa ra các cách khác nhau để chống lại việc thu

thậ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 trị

sẽ đưa IP này vào danh sách IP bị cấm và sẽ không có phép bất kỳ giao tiếp nà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 đến website, nếu từ IP này thao tác liên tục điền sai CAPTCHAs thì khi đó IP này sẽ được đưa vào Gray list để theo dõi các sai phạm

Trang 18

o White list: Đây 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 truy

cập

Một kỹ thuật quan trọng khác là chi địa chỉ IP thành các bảng nhỏ dựa vào từng khu 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ộc black list, gray list hay chưa xác định Chúng ta có thể chia nhỏ khu vực ra nếu như 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ừ:

• Thông tin của trình duyệt

Hầu hết các chương trình thu thập dữ liệu tự động thường không thể cung

cấp các thông tin như phông chữ hệ thống, chi 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ảy

ra, nếu không thể cung cấp các thông tin trên thì lập tức được đưa vào gray list và buộc phải xác thực thông qua CAPTCHA nếu muốn vào white list

• Thường xuyên thay đổi Markup

Markup 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ộ cấu trúc website 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ác

lớp và id của các thẻ đánh dấu để xác định phần cần 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ường xuyên cấu trúc sẽ gây khó chịu cho nhưng người dùng thực

Trang 19

Một phương pháp để ngăn chặn quá trình thu thập là trình bày các thông tin như là một phần của hình ảnh, và không phải là văn bản dạng text Thông tin văn bản bình thường có thể được chuyển đổi sang hình ảnh trên phía máy chủ và sau đó có thể được hiển thị đến người dùng Những người thu thập dữ liệu có thể dùng phần mềm Optical Character Recognition (OCR) để lấy được dữ liệu từ hình ảnh Tuy nhiên, phương pháp hiển thị thông tin dưới dạng hình ảnh không phải hiệu quả trong

thờ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ái

từ người sử dụng chân chính và có thể ảnh hưởng đến lượng truy cập của trang web Dữ liệu còn có thể được trình bày như là các đoạn flash hoặc HTML5 canvas thay vì hình ảnh

• Phân tích tần 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ại

từ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ũng không chính xác tuyệt đối vì việc truy xuất nhiều ít của người dùng tùy thuộc vào nhu cầu và nội dung của trang web tại thời điểm đó

• Phân tích lưu lượng dữ liệu

Đây là một phương pháp quan trọng được sử dụng trong những năm gần đây Thực tế cho thấy rằng các hệ thống thu thập dữ liệu thường dùng

giải pháp thay đổi IP liên tục hoặc dùng proxy để tránh bị phát hiện Tuy nhiên việc lưu lượng dữ liệu bị thu thập từ một nguồn nào đó là không

thể che giấu được Phương pháp được đề xuất là việc thu thập lưu lượng

dữ liệu đi đến một đích nào đó, ở lần đầu tiên ta sẽ gom cụm dữ 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 20

phương pháp này đòi hỏi các mẫu thử phải đầy đủ và phải được thu thập trong một thời gian dài

• Phân tích URL

Phương pháp phân tích URL được viếng thăm cũng là một các phát hiện xâm nhập Việc phân tích này dựa vào quá trình viếng thăm lặp đi lặp lại

một URL nào đó của 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

• Honeypots và Honeynets

Một số công ty kinh doanh trong lĩnh vực mạng ví dụ như Amazon Cloud Front và CloudFlare sử dụng một mạng lưới các honeypots, còn được gọi

là honeynets hoặc honeyfarms khắp thế giới để nắm bắt thông tin về các

hệ 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 để phát

hiện hoàn toàn tự động thu thập thông tin của các hệ thống thu thập dữ

Trang 21

e Công trình nghiên cứu trong nước : Đề tài nghiên cứu khoa học của sinh viên khoa Khoa học và Kỹ Thuật Máy Tính thuộc Đại Học Bách Khoa TP HCM năm 2016 về phát triển hệ thống thu thập, lưu trữ và thống kê dữ liệu của các website 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:

Hình 2 Ki ến trúc hệ thống thu thập dữ liệu

Kiến trúc hệ thống gồm ba tầng căn bản:

• Crawler: Thu thập dữ liệu từ các website và lưu trữ thành một tập dữ liệu

• Kiểm tra dữ liệu crawl: Kiểm tra từng dữ liệu lấy được từ tầng 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ất kỳ) 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 22

crawler và tự động xóa tập dữ liệu này, ngược lại thì tập dữ liệu sẽ được đưa xuống tầng dưới để thực hiện việc lưu trữ

• Đẩy dữ liệu vào kho: Dùng để thực hiện việc đưa dữ liệu vào trong kho chứa

dữ 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 oriented middleware) sử dụng giao thức AMQP - Advanced Message Queue Protocol (Đâ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ình viên một phương tiện trung gian để giao tiếp giữa nhiều thành phần trong một hệ

(message-thống lớn (ví dụ openstack) RabbitMQ sẽ nhận message đến từ các thành phần khác nhau trong hệ thống, lưu trữ chúng an toàn trước khi đẩy đến đích

Hình 3 Mô hình làm vi ệc của RabbitMQ

 Kho chứa dữ liệu

Kho chứa dữ liệu với Apache Hive, Apache Hive là một kho dữ liệu (data warehouse) 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ở của Apache Hadoop, nó cung cấp các tính năng chinh sau:

• Công cụ cho phép dễ dàng thực hiện tác vụ như trích xuất, vận chuyển và lưu trữ dữ liệu

• Cơ chế để xử lý cho nhiều định dạng dữ liệu khác nhau

• Truy cập tới dữ liệu dạng files được lưu trữ trực tiếp ở trong Apache HDFS hoặc đối với nhiều hệ thống lưu trữ dữ liệu khác như Apache HBase

• Thực hiện query thông qua MapReduce

Trang 24

Hình 4 Ki ến trúc Hive

 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ên cluster được phát triển bởi AMPLab tại Đại học California, Berkeley Sau đó, framework được Apache Software Foundation quản lý Nó ngược lại với mô hình hai 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 vấn nó nhiều lần, Spark rất phù hợp để chạy các

giải thuật học máy

Trang 25

Hình 5 Ch ạy ứng dụng Spark trên YARN trong chế độ cluster

Trên đây là một mô hình hệ thống thu thập, lưu trữ và phân tích dữ liệu hoàn

chỉnh Tuy nhiên bên cạnh đó vẫn còn tồn đọng một vài bài toán quan trọng cần

giải quyết, trong đó có 2 bài toán chính :

• 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”

• Xác thực độ chính xác của dữ liệu thu thập được từ các website TMĐT

Để giải bài toán thứ 1: Ayman Mohammed Mohammed đến từ IBM đã đưa ra một

số giải pháp để chống lại quá trình anti crawling như sau :

o Các website thường chặn IP của server thu thập dữ liệu khi phát hiện hành vi này, giải pháp đưa ra là sử dụng nhiều proxy để ẩn IP thật của server đang thu thập dữ liệu

Trang 26

o Vượt qua xác thực CAPTCHA do phần lớn dịch vụ web và trình duyệt cho phép chúng ta không cần xác thực bằng CAPTCHA, và hầu hết CAPTCHA của các website TMĐT rất yếu

o Các website thường tạo 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ùng

một giải thuật để tạo 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ững thông tin mà ta cần lấy

Chúng ta sẽ phân loại website để lấy dữ liệu làm 3 loại:

• Website khi dùng phương thức HTTP GET sẽ lấy được HTML có chứa tất

cả thông tin hiển thị trên trang web

• 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

• 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 để 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 để lấy dữ liệu từ trên xuống là

loại I, loại II, loại III Chúng ta sẽ cùng nói qua cách xử lý trên từng loại:

• Loại I: Trong 3 loại website để lấy dữ liệu thì loại I là loại cơ bản nhất và

dễ dàng lấy dữ liệu nhất Ta chỉ cần dùng HTTP GET để lấy HTML và lấy

ra những thông tin nằm trên đó Việc phân tích HTML để có thể lấy chính

Trang 27

• Loại II: Đây là một loại website vô cùng phức tạp để xây dựng Và hầu hết các website mới được xây dựng đều áp dụng mô hình này để xây dựng Các website 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 để lấy được dữ liệu của loại website này

Thứ nhất là đọc hiểu cấu trúc mã nguồn để tìm ra Web-API và dựa vào đó

lấy được thông tin lưu trữ trong database Đối với cách thức này, thời gian

lấy dữ liệu khá nhanh vì 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-API

nếu trang web có sử dụng các tool để rút gọn source code (minification)

Thứ hai là giả lập browser để sinh ra HTML chứa thông tin cần lấy Và từ

đó, sử dụng lấy dữ liệu như loại I Giải pháp này giúp ta có thể dễ dàng 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ọn source 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 để lấy dữ liệu tiêu tốn nhiều hơn rất nhiều lần so với cách

thứ nhất, vì phải giả lập browser để chạy

• 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ử

lý sẽ dùng các phương pháp nêu trong loại I, loại II để xử lý

2.2.3 Một vài thư viện hỗ trợ xây dựng công cụ crawler

Thư viện Jsoup

a Giới thiệu sơ lược về parser và công cụ Jsoup

• Parsing là một cách để lấy được thông tin và dữ liệu trên một trang web

dựa vào cách parse đoạn mã HTML của trang web đó lưu thành một cây dữ liệu Và chúng ta có thể dựa vào cây dữ liệu đó lấy ra thông tin

mà ta cần lấy trên trang web đó

Trang 28

• Jsoup là một thư viện parser hỗ trợ đắc lực từ việc lấy dữ liệu trên trang web với các tính năng chính: xử lý được các cấu trúc HTML phức tạp lấy từ trang web và từ đó tạo ra một kết quả phân tích (parse) rõ ràng giúp chúng ta lấy những thành phần dữ liệu trong một trang web dựa và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 Jsoup

Document trong Jsoup bao gồm các thành phần 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ác Node con và có một Element khác làm lớp cha (parent) của nó Và ngoài

ra mỗi Element còn cung cấp danh sách Filter dành riêng cho các lớp con

của nó (child elements)

c Các giải pháp xử lý input để parse một Document trong Jsoup

Parse một Document với đầu vào là một chuỗi kí tự

Vấn đề đưa ra: Chúng ta có đầu vào HTML hiện đang là một kiểu String Và chúng ta muốn parse đoạn string HTML đó để lấy ra dữ liệu

mà chúng ta cần, hoặc để kiểm tra thử nó có đúng dạng hay chưa, hoặc chỉnh sửa đoạn HTML đó Đoạn String HTML đó có thể đến từ các source code của các trang web

Giải pháp xử lý: Sử dụng phương thức static Jsoup.parse(String html), hoặc Jsoup.parse(String html, String baseUri) Ví dụ:

String html = <html><head><title>Firstparse</title></head>" +

"<body><p>Parsed HTML into a doc.</p></body></html>";

Document doc = Jsoup.parse(html);

Trang 29

Mô tả quá trình xử lý: Phương thức parse(String html, String baseUri) parse input HTML vào một Document mới Thông số baseURI được sử dụng để chuyển đổi những URL quan hệ thành URL tuyệt đối, và nên được gán bằng URL nơi tài liệu được lấy Nếu như không được, hoặc nếu như chúng ta biết HTML đó có một Element cơ

sở, 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ể lấy được thông tin bằng cách sử dụng những hàm thích hợp trong Document, cũng như các Element và Node của nó

Parse một đoạn thân HTML

Vấn đề đưa ra: Chúng ta có một đoạn thân HTML (ví dụ: một div chứa một cặp tag p) mà chúng ta muốn parse

Jsoup.parseBodyFragment(String html), ví dụ:

String html = "<div><p>Lorem ipsum.</p>";

Document doc = Jsoup.parseBodyFragment(html);

Element body = doc.body();

Mô tả quá trình xử lý: Phương thức parseBodyFragment tạo một

Document 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ông thường, chúng ta cũng sẽ có được kết quả tương tự, nhưng việc xem input như là một đoạn thân rõ ràng đảm bảo được bất cứ đoạn HTML

nào được cung cấp bởi người dùng cũng sẽ được parse vào Element

Trang 30

Phương thức Document.body() lấy được những Element con trong Element của Document Nó cũng giống với phương thức

doc.getElementsByTag(“body”)

Tải một Document từ một URL

Vấn đề đưa ra: Chúng ta cần lấy và parse một HTML Document từ web, và tìm dữ liệu bên trong nó

Giải pháp xử lý: Sử dụng phương thức Jsoup.connect(String url), ví dụ: Document doc = Jsoup.connect("http://example.com/").get();

String title = doc.title();

Mô tả quá trình xử lý: Phương thức connect(String url) tạo một kết nối

mới, và get() lấy và parse một file HTML Nếu như có lỗi xuất hiện trong quá trình lấy 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 Connection interface được thiết kế cho việc chaining method để xây dựng một yêu

cầu cụ thể:

Document doc = Jsoup.connect("http://example.com") data("query", "Java")

.userAgent("Mozilla") cookie("auth", "token") timeout(3000)

.post();

Phương thức này hỗ trợ web URL (giao thức http và https), nếu chúng

ta 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 này

Tải một Document từ tệp tin

Trang 31

Vấn đề đưa ra: Chúng ta có một tệp tin chứa dữ liệu HTML mà chúng

ta cần tải và parse để có thể trích xuất thông tin từ nó

Giải pháp xử lý: Sử dụng phương thức static Jsoup.parse(File in, String charsetName, String baseUri), ví dụ:

File input = new File("/tmp/input.html");

Document doc = Jsoup.parse(input, "UTF-8",

"http://example.com/");

Mô tả quá trình xử lý: Phương thức parse(File in, String charsetName,

String baseUri) tải và parse một file HTML Nếu như có lỗi xuất hiện trong 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ền mộ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 dẫn của file như là một baseUri Phương 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

Các giải pháp xử lý trích xuất dữ liệu để parse một Document trong Jsoup

Sử dụng những phương thức DOM để thao tác trên Document Vấn đề

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 cấu trúc của một HTML Document

Trang 32

Giải pháp xử lý: Sử dụng một phương thức kiểu DOM có sẵn sau khi

parse 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.getElementById("content");

Elements links = content.getElementsByTag("a");

for (Element link : links) { String linkHref = link.attr("href");

String linkText = link.text();

}

Mô tả quá trình xử lý: Những Element cung cấp một lượng các phương

thức kiểu DOM để tìm những Element, và trích xuất và thao tác trên những dữ liệu của nó Những phương thức lấy dữ liệu DOM hoạt động tùy theo ngữ cảnh: nếu được gọi ở một Document cha, các phương thức

sẽ tìm những Element phù hợp ở Document đó, còn nếu gọi ở Element con, các phương thức sẽ tìm những Element ở Element con đó Bằng cách này, chúng ta có thể sàng lọc dữ liệu

Một vài ví dụ tìm kiếm kiếm Element và thao tác trên HTML:

getElementById(String id) getElementsByTag(String tag) getElementsByClass(String className) append(String html)

prepend(String html)

Trang 33

prependText(String text) appendElement(String tagName)

Sử dụng selector-syntax để tìm kiếm các Element

Vấn đề đưa ra: Chúng ta muốn tìm hoặc thao tác các Element bằng cách

sử dụng CSS hoặc các selector syntax giống jquery

Giải pháp xử lý: Sử dụng các phương thức Element.select(String selector) và Elements.select(String selector):

File input = new File("/tmp/input.html");

// 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=masthead Element masthead = doc.select("div.masthead").first();

// direct a after h3 Elements resultLinks = doc.select("h3.r > a");

Mô tả quá trình xử lý: Những Element của Jsoup hỗ trợ selector syntax

kiểu giống như CSS (hoặc jquery) để 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 select

có sẵn trong Document, Element hoặc trong Elements, là một phương thức theo ngữ cảnh, do đó chúng ta có thể lọc thông qua việc chọn nhữ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ương thức để trích xuất và thao tác trên kết quả

Trang 34

Trích xuất thuộc tính (attribute), dữ liệu text và HTML từ những Element

Vấn đề đưa ra: Sau khi parse một Document, và tìm một số Element, chúng ta có thể sẽ muốn lấy những dữ liệu bên trong các Element này Giải pháp xử lý: Để lấy giá trị của một attrubute, sử dụng phương thức Node.attr(String key) Với text của một Element (cùng với các con của nó), sử dụng Element.text() Với HTML, sử dụng Element.html(), hoặc Node.outerHtml() Ví dụ:

String html = "<p>An <a href='http://example.com/'><b>example</b></a> link.</p>";

Document doc = Jsoup.parse(html);

Element link = doc.select("a").first();

String text = doc.body().text(); // "An example link"

String linkHref = link.attr("href");

// "http://example.com/"

String linkText = link.text(); // "example"

String linkOuterH = link.outerHtml();

Giải pháp xử lý: Đảm bảo chắc rằng ta định rõ một base URL khi parse

Sử dụng tiền tố abs: attribute để phân giải một URL tuyệt đối từ một

Trang 35

Document doc = Jsoup.connect("http://jsoup.org").get();

Element link = doc.select("a").first();

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ạng quan 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ức Node.attr(String key) để lấy một attribute href, nó sẽ trả về kết quả như

đã được đặc tả trong HTML nguồn

Đây là một thư viện "GUI-Less browser for Java programs" dùng để mô hình tài liệu HTML, là một trong những bộ Web Automation Testing tốt, với các tính năng:

• API của nó khá mạnh, cho phép chúng ta kích hoạt trang web, điền thông tin form, submit form, click link…

• Hỗ trợ tốt Javascript và cả những thư viện AJAX phức tạp

• Có thể giả lập được Internet Explorer, Firefox và Chrome

Một vài thao tác cơ bản của HTMLUnit như sau:

• Tạo một web client và tải trang chủ từ trang web Sau đó xác thực tính đúng đắn của tiêu đề trang web Phương thức getPage() có thể trả về nhiều kiểu trang dựa trên loại nội dung của dữ liệu trả về Trong trường hợp này

ta 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 36

try (final WebClient webClient = new WebClient()) { final HtmlPage page =

final String pageAsText = page.asText();

Assert.assertTrue(pageAsText.contains("Support for the HTTP and HTTPS protocols"));

} }

• Giả lập một trình duyệt Hiện thực bằng cách truyền BrowserVersion vào WebClient constructor

public void homePage_Firefox() throws Exception { try (final WebClient webClient = new

WebClient(BrowserVersion.FIREFOX_38)) { final HtmlPage page =

webClient.getPage("http://htmlunit.sourceforge.net");

Assert.assertEquals("HtmlUnit - Welcome to HtmlUnit", page.getTitleText());

} }

Trang 37

• Khi đã tham khảo đến HtmlPage, ta có thể tìm kiếm cho một HtmlElement

cụ 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 =

} }

• Điền và submit form

public void submittingForm() throws Exception { try (final WebClient webClient = new WebClient()) { // Get the first page

final HtmlPage page1 = 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 = page1.getFormByName("myform");

final HtmlSubmitInput button = form.getInputByName("submitbutton");

Trang 38

final HtmlTextInput textField = form.getInputByName("userid"); // Change the value of the text field

Thư viện Phantomjs

Phantomjs là một trình duyệt chính xác hơn phantomjs là một “headless browser” 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 website thông qua giao diện được hiển thị bởi các trình duyệt này thì 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

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 phantomjs

có thể chụp lại ảnh giao diện thông qua đó chúng ta có thể kiểm tra được giao diện của website Sau đây sẽ là demo nhỏ về hoạt động truy cập và chụp ảnh website của phantomjs:

B1: Tạo file sample.js với cấu trúc như sau:

Trang 39

Hình 6 Ví d ụ về chức năng load web site của phantomJS

B2: Gõ lệnh sau ở cmd: phantomjs sample.js http://google.com pageRender Trong đó:

• google.com sẽ là website chúng ta truy cập

• pageGender là tên file ảnh chụp lại 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:

... chống lại trình thu thập liệu vơ cần thiết, khơng thu thập liệu việc phát triển hệ thống lưu trữ thống kê

liệu dư thừa Từ mục tiêu đề tài đặt phát triển hệ

thống thu thập liệu gần giống... Kỹ Thu? ??t Máy Tính thu? ??c Đại Học Bách Khoa TP HCM năm 2016 phát triển hệ thống thu thập, lưu trữ thống kê liệu website TMĐT Việt Nam

 Thu thập liệu

Kiến trúc thu thập liệu hệ thống: ... Kiến trúc hệ thống thu thập liệu dạng 57

3.2.2 Kiến trúc hệ thống thu thập liệu dạng 59

CHƯƠNG THỰC NGHIỆM VÀ ĐÁNH GIÁ 60

4.1 Cài đặt kiểm thử công cụ thu thập liệu dạng

Ngày đăng: 26/01/2021, 07:02

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
1. Mini Singh Ahuja, Dr Jatinder Singh Bal, Varnica. Web Crawler: Extracting the Web Data.2014. http://www.ijcttjournal.org/Volume13/number-3/IJCTTV13P128.pdf Link
5. Jsoup cookbook, xem 20.10.2015, http://jsoup.org/cookbook/ Link
6. RabbitMQ Documentation, xem 20.10.2015, http://www.RabbitMQ.com/documentation.html Link
7. Tìm hiểu RabbitMQ, xem 20.10.2015, http://kipalog.com/posts/Tim-hieu-RabbitMQ---Phan-1 Link
8. HtmlUnit – Welcome to HtmlUnit, xem 20.10.2015, http://htmlunit.sourceforge.net/ Link
9. Apache Hadoop 2.7.1, xem 20.10.2015, http://hadoop.apache.org/docs/current/ Link
10. YARN và MapReduce2, xem 20.10.2015, http://kipalog.com/posts/YARN-va-MapReduce2 Link
12. Home - Apache Hive - Apache Software Foundation, xem 20.10.2015, https://cwiki.apache.org/confluence/display/Hive/Home Link
13. Tổng quan về Hive, xem 20.10.2015, http://bigsonata.com/504/ Link
14. Hadoop Tutorial: Developing Big-Data Applications with Apache Hadoop, 20.10.2015, http://www.coreservlets.com/hadoop-tutorial/ Link
15. Elasticsearch Reference [2.0], xem 20.10.2015, http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/index.html 16. Kibana User Guide [4.2], xem 20.10.2015 Link
17. Analytics with Kibana and Elasticsearch through Hadoop - Rittman Mead Consulting. (2014, November 3), xem 20.10.2015,http://www.rittmanmead.com/2014/11/analytics-with-kibana-and-elasticsearch-through-hadoop-part-1-introduction/ Link
2. Marz, N., &amp; Warren, J. (2014). Big data: Principles and best practices of scalable real- time data systems. Nhà xuất bản Manning Khác
3. Hwang, K., &amp; Xu, Z. (1998). Scalable parallel computing: Technology, architecture, programming. Boston: Nhà xuất bản WCB/McGraw-Hill Khác
4. Coulouris, G., &amp; Dollimore, J. (2005). Distributed systems: Concepts and design (4th ed.). Harlow, England: Nhà xuất bản Addison-Wesley Khác
11. How to Plan and Configure YARN and MapReduce 2 in HDP 2.0, xem Khác

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w