Tải bản đầy đủ (.doc) (100 trang)

Xây dựng ứng dụng thu thập dữ liệu tự động từ các Website

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.58 MB, 100 trang )

ĐẠI HỌC QUỐC GIA TP.HCM
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA KHOA HỌC & KỸ THUẬT MÁY TÍNH
LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC
Xây dựng ứng dụng thu thập
dữ liệu tự động từ các Website
HỘI ĐỒNG 2 - HỆ THỐNG THÔNG TIN
Chủ tịch: TS. Võ Thị Ngọc Châu
GVHD: ThS. Đặng Trần Trí
GVPB: ThS. Nguyễn Văn Đoàn
---o0o---
SVTH 1: Nguyễn Trung Kiên 50501352
SVTH 2: Lê Quang Minh 50501668
Luận văn tốt nghiệp Xây dựng ứng dụng thu thập dữ liệu tự động từ các website
TP. HỒ CHÍ MINH, 1/2010
Trang 2
Luận văn tốt nghiệp Xây dựng ứng dụng thu thập dữ liệu tự động từ các website
LỜI CAM ĐOAN
“Chúng tôi cam đoan rằng, ngoại trừ các kết quả tham khảo từ các công trình khác như đã
ghi rõ trong luận văn, các công việc trình bày trong luận văn này là do chính chúng tôi thực
hiện và chưa có phần nội dung nào của luận văn này được nộp để lấy một bằng cấp ở trường
này hoặc trường khác”.
Nguyễn Trung Kiên Lê Quang Minh
Trang 3
Luận văn tốt nghiệp Xây dựng ứng dụng thu thập dữ liệu tự động từ các website
LỜI CẢM ƠN
Sau khoảng thời gian được học tập và rèn luyện tại trường Đại Học Bách Khoa TP.HCM,
dưới sự chỉ bảo tận tình của các thầy cô trong các phòng khoa, nay chúng em đã gần mãn khoá
học, đang trong giai đoạn hoàn thành luận văn tốt nghiệp và sắp sửa trở thành một người kỹ sư
công nghệ thông tin có thể góp sức xây dựng cho sự phát triển xã hội, đất nước. Để được như
ngày hôm nay chúng em vô cùng biết ơn tất cả các thầy cô trong Khoa Khoa Học và Kỹ Thuật


Máy Tính đã tận tình giảng dạy, hướng dẫn, truyền đạt những kiến thức, kinh nghiệm quý báu
cho chúng em trong khoảng thời gian được học tập, rèn luyện tại trường. Thầy ThS. Đặng Trần
Trí, người đã tận tình hướng dẫn, định hướng, giúp đỡ và chỉ dạy chúng em rất nhiều trong suốt
quá trình thực hiện luận văn tốt nghiệp. Các anh chị em sinh viên các khoá đã cùng chúng em
học tập và chia sẻ kiến thức tiếp thu trong quá trình theo học tại trường. Đồng thời chúng em
cũng xin gửi lời cảm ơn đến cha mẹ, anh chị, bạn bè những người luôn đứng bên cạnh chúng
em để động viên, an ủi, ủng hộ về vật chất lẫn tinh thần trong suốt khoảng thời gian qua.
Với lòng biết ơn chân thành, chúng em xin gởi lời chúc sức khoẻ và những gì tốt đẹp nhất
đến các thầy cô trong khoa, trong nhà trường, những bậc cha mẹ, anh chị đáng kính và toàn thể
các bạn bè hiện đang còn học hoặc không còn học tại trường Đại Học Bách Khoa TP.HCM..
Nguyễn Trung Kiên và Lê Quang Minh
Trang 4
Luận văn tốt nghiệp Xây dựng ứng dụng thu thập dữ liệu tự động từ các website
TÓM TẮT LUẬN VĂN
Với sự bùng nổ về công nghệ thông tin những năm gần đây, đặc biệt là sự phát triển mạnh
mẽ như vũ bão của Internet, cuộc sống của con người đã càng ngày càng trở nên phong phú và
đa dạng hơn. Kho tàng tri thức của Internet đã làm thay đổi đáng kể nhiều lĩnh vực, từ học tập,
nghiên cứu cho đến kinh doanh và thương mại. Tuy nhiên con người vẫn không dừng lại, họ
luôn có những khát khao tìm tòi và phát triển, đặc biệt là đối với chiếc máy tính. Chiếc máy
tính cá nhân đã được ra đời để trợ giúp cho con người, và họ vẫn luôn tìm cách làm cho nó có
thể hỗ trợ được cho con người nhiều hơn nữa, thậm chí là làm thay cho con người.
Trong thực tế hiện nay, lượng thông tin trên Internet càng ngày càng khổng lồ, điều này
khiến việc sử dụng World Wide Web để khai thác thông tin hữu ích, phục vụ cho các mục đích
cá nhân luôn có những khó khăn nhất định của nó. Nhất là đối với những mục đích đòi hỏi phải
có sự thu thập thông tin với khối lượng lớn trên Web, chẳng hạn một công ty quảng cáo muốn
thu thập thật nhiều thông tin liên lạc của các doanh nghiệp trong nhiều lĩnh vực để gửi thư
quảng cáo. Những công việc như thế này nếu được thực hiện thủ công bằng sức người thì sẽ
mất rất nhiều thời gian, công sức, và chúng cũng khá tẻ nhạt do tính chất phải lặp đi lặp một vài
thao tác của việc thu thập dữ liệu.
Đề tài Luận Văn Tốt Nghiệp này sẽ cố gắng giải quyết vấn đề nêu trên, bằng cách xây

dựng một công cụ hỗ trợ có khả năng giúp con người trong những bài toán thu thập dữ liệu,
một cách tự động. Công cụ sẽ cố gắng làm thay cho con người ở một số công đoạn, giúp giảm
thời gian và sức lực của con người trong việc thu thập dữ liệu từ các website. Ý tưởng này nếu
thành công sẽ đem lại được rất nhiều lợi ích vì nhu cầu thu thập dữ liệu trên web hiện nay đã
trở thành một nhu cầu rất phổ biến và thiết thực.
Trang 5
Luận văn tốt nghiệp Xây dựng ứng dụng thu thập dữ liệu tự động từ các website
MỤC LỤC
1 Giới thiệu....................................................................................................................................12
1.1 Mở đầu.................................................................................................................................12
1.2 Yêu cầu và mục tiêu của đề tài............................................................................................12
1.2.1 Yêu cầu.........................................................................................................................12
1.2.2 Mục tiêu........................................................................................................................13
1.3 Bố cục báo cáo.....................................................................................................................13
2 Tìm hiểu và phân tích sơ bộ.......................................................................................................14
2.1 Tìm hiểu các kiến thức tổng quan.......................................................................................14
2.1.1 World Wide Web..........................................................................................................14
2.1.2 Web Crawler.................................................................................................................15
2.1.3 Web Scraper.................................................................................................................16
2.1.4 Phân loại Web...............................................................................................................17
2.1.4.1 Phân loại dựa vào sự thể hiện của tính động........................................................17
2.1.4.2 Phân loại dựa vào cách thức tạo ra tính động.......................................................18
2.1.4.3 Khả năng của các web crawler.............................................................................19
2.2 Phân tích sơ bộ....................................................................................................................19
3 Các kiến thức nền tảng và các công nghệ liên quan..................................................................23
3.1 HTML..................................................................................................................................23
3.2 XML.....................................................................................................................................24
3.3 XHTML...............................................................................................................................25
3.3.1 Tính chuẩn của một tài liệu XML (well-formed)........................................................25
3.3.2 Tên các phần tử và tên các thuộc tính của phần tử phải ở dạng chữ in thường..........25

3.3.3 Các thẻ không rỗng bắt buộc phải có thẻ đóng...........................................................25
3.3.4 Các thuộc tính luôn phải ghi rõ giá trị.........................................................................26
Trang 6
Luận văn tốt nghiệp Xây dựng ứng dụng thu thập dữ liệu tự động từ các website
3.3.5 Các phần tử rỗng..........................................................................................................26
3.4 XPath...................................................................................................................................27
3.4.1 Cú pháp và ngữ nghĩa...................................................................................................27
3.4.1.1 Cú pháp rút gọn.....................................................................................................27
3.4.1.2 Cú pháp đầy đủ......................................................................................................28
3.4.2 Axis specifier................................................................................................................28
3.4.3 Node test.......................................................................................................................29
3.4.4 Predicate.......................................................................................................................29
3.4.5 Các hàm và toán tử.......................................................................................................29
3.5 Các công nghệ và thư viện hỗ trợ khác...............................................................................30
3.5.1 HTML Tidy..................................................................................................................30
3.5.2 cURL.............................................................................................................................32
4 Phân tích......................................................................................................................................33
4.1 Một ví dụ tổng quát của bài toán thu thập dữ liệu..............................................................33
4.2 Phân loại các trang Web dựa vào cách thức chuyển trang.................................................36
4.3 Phân tích và các giải pháp...................................................................................................37
5 Thiết kế.......................................................................................................................................41
5.1 Sơ đồ Use Case....................................................................................................................41
5.2 Kiến trúc tổng quan.............................................................................................................42
5.3 Thành phần FRONT............................................................................................................44
5.3.1 Mô hình MVC..............................................................................................................44
5.3.2 Bot Manager.................................................................................................................46
5.3.2.1 Các trạng thái của Bot...........................................................................................46
5.3.2.2 Các lệnh tạo mới, xóa, sửa thông tin Robot.........................................................48
5.4 Thành phần CORE..............................................................................................................50
5.4.1 Crawler.........................................................................................................................51

Trang 7
Luận văn tốt nghiệp Xây dựng ứng dụng thu thập dữ liệu tự động từ các website
5.4.2 Extractor ......................................................................................................................53
5.4.3 Các Helper....................................................................................................................54
6 Hiện thực.....................................................................................................................................56
6.1 Môi trường phát triển ứng dụng..........................................................................................56
6.2 Giao diện sử dụng của WDE...............................................................................................57
6.3 Đặc tả dữ liệu đầu vào bằng XML......................................................................................59
6.3.1 Đặc tả thông tin chung cho Bot....................................................................................59
6.3.2 Đặc tả các trang............................................................................................................60
6.3.3 Đặc tả bảng cơ sở dữ liệu.............................................................................................65
6.4 Cấu trúc cơ sở dữ liệu..........................................................................................................66
6.4.1 Danh sách các bảng......................................................................................................66
6.4.2 Chi tiết các bảng...........................................................................................................66
6.5 Front.....................................................................................................................................69
6.5.1 Bot Manager.................................................................................................................69
6.6 Core......................................................................................................................................71
6.6.1 Robot.............................................................................................................................72
6.6.1.1 Quản lý tiến trình của Robot.................................................................................72
6.6.1.2 Thực hiện quy trình thu thập dữ liệu....................................................................74
6.6.2 Crawler.........................................................................................................................75
6.6.2.1 Simple Crawler: ....................................................................................................76
6.6.2.2 Advanced Crawler:................................................................................................77
6.6.2.2.1 wdeBrowser....................................................................................................77
6.6.3 Extractor.......................................................................................................................80
6.6.3.1 Expression Extractor.............................................................................................80
6.6.3.2 XPath Extractor.....................................................................................................81
6.6.3.3 Selector Extractor..................................................................................................81
Trang 8
Luận văn tốt nghiệp Xây dựng ứng dụng thu thập dữ liệu tự động từ các website

7 Sử dụng và đánh giá...................................................................................................................83
7.1 Các bước cơ bản để sử dụng ứng dụng...............................................................................83
7.1.1 Xác định trang web cần thu thập dữ liệu.....................................................................85
7.1.2 Xác định kiểu lấy dữ liệu (crawler engine) cho Robot................................................85
7.1.3 Xác định các tùy chọn cho Robot................................................................................85
7.1.4 Xây dựng cấu hình cụ thể cho từng trang con.............................................................86
7.1.5 Xác định cấu trúc cơ sở dữ liệu lưu trữ:......................................................................87
7.2 Các ví dụ cụ thể từ đơn giản đến phức tạp.........................................................................88
7.2.1 Ví dụ 1..........................................................................................................................88
7.2.2 Ví dụ 2: ........................................................................................................................90
7.2.3 Ví dụ 3..........................................................................................................................93
8 Đánh giá chung...........................................................................................................................96
8.1 Các kết quả đạt được...........................................................................................................96
8.2 Các hạn chế của ứng dụng...................................................................................................97
8.3 Hướng phát triển..................................................................................................................98
9 Tổng kết......................................................................................................................................99
10 Tài liệu tham khảo..................................................................................................................100
Trang 9
Luận văn tốt nghiệp Xây dựng ứng dụng thu thập dữ liệu tự động từ các website
MỤC LỤC HÌNH ẢNH
Hình 2-1. World Wide Web..........................................................................................................14
Hình 2-2. Sơ đồ hoạt động của một web crawler đơn giản..........................................................15
Hình 2-3. Phân loại web cùng khả năng của các web crawler.....................................................19
Hình 2-4. Phạm vi của thành phần crawler của ứng dụng trong đề tài........................................21
Hình 4-5. Một trang web danh bạ..................................................................................................34
Hình 5-6. Sơ đồ Use Case của ứng dụng WDE............................................................................41
Hình 5-7. Kiến trúc tổng quan của WDE......................................................................................43
Hình 5-8. Kiến trúc của thành phần FRONT................................................................................44
Hình 5-9. Mô hình MVC...............................................................................................................45
Hình 5-10. Sơ đồ các trạng thái của Bot.......................................................................................46

Hình 5-11. Quá trình tạo mới một Bot..........................................................................................48
Hình 5-12. Quá trình chỉnh sửa một Bot.......................................................................................49
Hình 5-13. Quá trình xóa một Bot.................................................................................................49
Hình 5-14. Quá trình nhận dữ liệu đặc tả đầu vào XML..............................................................50
Hình 5-15. Kiến trúc thành phần CORE.......................................................................................51
Hình 5-16. Quá trình hoạt động tổng quát của ROBOT...............................................................52
Hình 5-17. Crawler gồm có 2 crawler engine là Simple và Advanced........................................53
Hình 5-18. Extractor gồm có 3 Extractor con...............................................................................54
Hình 6-19. Giao diện chính của WDE..........................................................................................57
Hình 6-20. Giao diện nhập / chỉnh sửa dữ liệu đặc tả đầu vào XML...........................................57
Hình 6-21. Giao diện quản lý hoạt động Bot và xem dữ liệu trích xuất được.............................58
Hình 6-22. Sơ đồ cấu trúc cơ sở dữ liệu của chương trình...........................................................66
Hình 6-23. Sơ đồ tuần tự của tác vụ start Bot...............................................................................69
Hình 6-24. Sơ đồ tuần tự của tác vụ resume Bot..........................................................................69
Trang 10
Luận văn tốt nghiệp Xây dựng ứng dụng thu thập dữ liệu tự động từ các website
Hình 6-25. Sơ đồ tuần tự của tác vụ pause Bot.............................................................................70
Hình 6-26. Sơ đồ tuần tự của tác vụ stop Bot...............................................................................70
Hình 6-27. Sơ đồ class giữa Robot - Crawler - Extractor.............................................................71
Hình 6-28. Sơ đồ tuần tự thể hiện quá trình hoạt động tổng quát của Robot...............................72
Hình 6-29. Quá trình thu thập dữ liệu tổng quát...........................................................................74
Hình 6-30. Sơ đồ class của các Crawler........................................................................................75
Hình 6-31. Sơ đồ tuần tự hoạt động của Simple Crawler.............................................................76
Hình 6-32. Sơ đồ tuần tự hoạt động của Advanced Crawler........................................................77
Hình 6-33. Sơ đồ class của các Extractor......................................................................................80
Trang 11
Luận văn tốt nghiệp Xây dựng ứng dụng thu thập dữ liệu tự động từ các website
1 Giới thiệu
1.1 Mở đầu
Với sự phát triển mạnh mẽ của Internet trong những năm gần đây, đặc biệt là sự bùng nổ

của World Wide Web, con người càng ngày càng phát sinh những nhu cầu về tìm kiếm và sử
dụng thông tin. Những người dùng bình thường có thể tìm kiếm thông tin trên web một cách dễ
dàng nhờ vào các máy tìm kiếm (search engine), họ có thể đánh dấu (bookmark) các trang kết
quả hoặc sao chép nội dung họ muốn vào một nguồn nào đó để tham khảo về sau. Tuy nhiên
nếu lượng thông tin mà họ cần tổng hợp lại quá nhiều thì quá trình duyệt web, trích xuất và lưu
trữ theo cách thủ công lại trở thành một công việc đầy khó khăn và hao tốn nhiều sức lực, thời
gian của con người. Một số ví dụ có thể kể ra như: nhu cầu trích xuất thông tin về tất cả các mặt
hàng thuộc một chuyên mục của một website bán hàng nào đó nhằm phục vụ mục đích khảo sát
thị trường, nhu cầu tổng hợp tin tức từ các website tin tức để xây dựng các trang web thông tin
tổng hợp, nhu cầu thu thập thông tin về các doanh nghiệp thuộc một ngành nào đó trên website
danh bạ doanh nghiệp để gửi email quảng cáo, tiếp thị, v.v… Chính những ví dụ thực tế như
trên đã nảy sinh ra nhu cầu: cần phải có một phương thức hoặc công cụ nào đó có khả năng tìm
kiếm, trích xuất thông tin trên web và lưu trữ lại thông tin đó theo ý muốn của con người, một
cách tự động và hiệu quả, và đó cũng chính là mục tiêu của đề tài Luận Văn Tốt Nghiệp này.
1.2 Yêu cầu và mục tiêu của đề tài
1.2.1 Yêu cầu
Đề tài: Xây dựng ứng dụng thu thập dữ liệu tự động từ các website
Con người có nhu cầu thu thập một khối lượng lớn dữ liệu từ các website để phục vụ cho
mục đích của mình (chẳng hạn thu thập dữ liệu về các nhà cung cấp sản phẩm thời trang trên
website Trang Vàng Việt Nam để gửi email quảng cáo). Lượng dữ liệu này nếu thu thập bằng
tay thì phải mất rất nhiều thời gian và công sức. Do đó, trong đề tài này, sinh viên sẽ tìm hiểu
về các kỹ thuật thu thập dữ liệu trên web một cách tự động và hiện thực một giải pháp cụ thể để
thu thập chúng.
Trang 12
Luận văn tốt nghiệp Xây dựng ứng dụng thu thập dữ liệu tự động từ các website
Các nhiệm vụ:
• Tìm hiểu về các kỹ thuật thu thập dữ liệu tự động từ các website
• Hiện thực một kỹ thuật để thu thập dữ liệu trên một website cụ thể
1.2.2 Mục tiêu
Xây dựng được một ứng dụng thu thập dữ liệu tự động từ các website. Ứng dụng phải có

khả năng mở rộng, tùy biến được để có thể sử dụng với nhiều website khác nhau.
1.3 Bố cục báo cáo
Phần 1: Giới thiệu đề tài, yêu cầu và mục tiêu của đề tài
Phần 2: Tìm hiểu các kiến thức nền tảng và phân tích sơ bộ vấn đề đề tài đặt ra
Phần 3: Tìm hiểu các công nghệ liên quan, các kiến thức cần thiết để có thể xây dựng và
phát triển ứng dụng của đề tài
Phần 4: Phân tích chính
Phần 5: Thiết kế ứng dụng, kiến trúc các thành phần của ứng dụng
Phần 6: Hiện thực ứng dụng, các kỹ thuật sử dụng, các lưu đồ giải thuật, mã giả
Phần 7: Sử dụng, thử nghiệm thực tế và các đánh giá về kết quả thu được
Phần 8: Các hạn chế và hướng phát triển lên sau này
Phần 9: Tổng kết
Phần 10: Tài liệu tham khảo
Trang 13
Luận văn tốt nghiệp Xây dựng ứng dụng thu thập dữ liệu tự động từ các website
2 Tìm hiểu và phân tích sơ bộ
Để có thể đi sâu vào các vấn đề đề tài đặt ra, trước hết chúng ta cùng tìm hiểu một số kiến
thức khái quát để có cái nhìn tổng quan về bài toán.
2.1 Tìm hiểu các kiến thức tổng quan
2.1.1 World Wide Web
World Wide Web (WWW, hay gọi tắt là Web) là một ứng dụng phổ biến và phát triển
mạnh mẽ nhất của Internet hiện nay. World Wide Web là một mạng lưới bao gồm các tài liệu
siêu văn bản (hypertext) được đặt trên các máy tính nằm trong mạng Internet [1]. Các siêu văn
bản này có khả năng liên kết lẫn nhau thông qua các siêu liên kết (hyperlink). Sử dụng một
trình duyệt web (web browser), con người có thể xem được các trang web (web page, cũng
chính là một siêu văn bản) trên màn hình máy vi tính, nội dung các trang web có thể có chữ,
hình ảnh, video, thậm chí có thể tương tác với người sử dụng thông qua các thiết bị như bàn
phím, chuột. Cũng chính nhờ các hyperlink mà các trang web có thể liên kết được với nhau
thông qua chỉ một cú click chuột, đây là khả năng đem lại sự mở rộng vô cùng lớn cho world
wide web.

Hình 2-1. World Wide Web
Trang 14
Luận văn tốt nghiệp Xây dựng ứng dụng thu thập dữ liệu tự động từ các website
Nội dung các trang web chủ yếu được viết bằng ngôn ngữ HTML hoặc XHTML. Khi
muốn truy cập một trang web, trình duyệt web sẽ gửi yêu cầu đến máy chủ (web server) chứa
trang web đó. Máy chủ sẽ hồi đáp bằng nội dung trang web được yêu cầu trong trường hợp
trang web đó thật sự tồn tại trên máy chủ và được cho phép truy cập. Cả hai quá trình yêu cầu
và hồi đáp này đều được thực hiện dựa trên giao thức HTTP (Hyper Text Transfer Protocol).
Nội dung các trang web có thể là văn bản tĩnh (static web page – trang web tĩnh) hoặc cũng có
thể được sinh ra bởi các web server ứng với mỗi lượt yêu cầu, các yêu cầu khác nhau đến cùng
một trang web có thể nhận được các nội dung khác nhau (dynamic web page – trang web
động). Sự phân loại này sẽ được đề cập sâu hơn trong phần 2.1.4.
2.1.2 Web Crawler
Một Web Crawler là một chương trình máy tính có thể “duyệt web” một cách tự động và
theo một phương thức nào đó được xác định trước [1]. Vì là một chương trình nên quá trình
“duyệt web” của các web crawler không hoàn toàn giống với quá trình duyệt web của con
người (web crawler phải sử dụng các phương thức dựa trên HTTP trực tiếp chứ không thông
qua web browser như con người). Các web crawler thường bắt đầu với một danh sách URL của
các web page để ghé thăm đầu tiên. Khi ghé thăm một URL, crawler sẽ đọc nội dung web page,
tìm tất cả các hyperlink có trong web page đó và đưa các URL được trỏ tới bới các hyperlink đó
vào danh sách URL. Dựa vào danh sách URL này, Crawler lại tiếp tục quá trình duyệt đệ quy
để ghé thăm tất cả các URL chưa được duyệt đến. Quá trình này được gọi là web crawling hoặc
là web spidering, các web crawler còn được gọi là các robot (bot) hoặc nhện web (web spider).
Thường thì các crawler được tạo ra để phục vụ cho một mục đích, tác vụ nào đó. Ví dụ các máy
tìm kiếm (search engine) sử dụng crawler để tải các web page, các web page này sau đó được
search engine đánh chỉ mục để có thể cho kết quả nhanh hơn khi được tìm kiếm.
Hình 2-2. Sơ đồ hoạt động của một web crawler đơn giản
Trang 15
Luận văn tốt nghiệp Xây dựng ứng dụng thu thập dữ liệu tự động từ các website
Về bản chất, web crawling chính là quá trình duyệt đệ quy một đồ thị cây có các node là

các web page. Tùy thuộc vào chiến lược của crawler, các node có thể được duyệt theo chiều sâu
hoặc duyệt theo chiều rộng. Trong thực tế, quá trình crawling web sẽ phải đối diện với rất nhiều
vấn đề khó khăn như: kích thước khổng lồ của world wide web, các trang web HTML được
viết không chuẩn, hạn chế ghé thăm một URL đã được ghé thăm trước đó, các trang web động,
nội dung các trang web được cập nhật thường xuyên v.v… Tuy nhiên đề tài luận văn này sẽ chỉ
cần một số khả năng của web crawler nên sẽ chỉ giải quyết một số vấn đề cụ thể và sẽ được
trình bày kỹ hơn trong các phần sau của báo cáo.
2.1.3 Web Scraper
Các trang web chủ yếu được viết bằng các ngôn ngữ đánh dấu như HTML, XHTML và
được nhắm đến đối tượng sử dụng là con người chứ không phải máy tính. Các trang web lại
chứa đựng nhiều thông tin có ích mà con người có thể muốn thu thập và lưu trữ lại, chính vì thế
mà các web scraper được ra đời. Web Scraper là một thuật ngữ để chỉ các phần mềm có khả
năng bóc tách và trích xuất thông tin chứa trên các web page một cách tự động [1]. Công việc
này được gọi là web scraping, web harvesting hoặc web data extraction. Các web scraper khác
với web crawler ở chỗ, trong khi web crawler tập trung vào việc duyệt các trang web thông qua
các liên kết hyperlink, thì web scraper lại tập trung vào việc chuyển đổi nội dung không cấu
trúc của các trang web (chủ yếu được viết bằng HTML) sang thành nội dung có cấu trúc, sau đó
bóc tách, trích xuất phần thông tin mong muốn và lưu trữ lại vào các cơ sở dữ liệu hoặc
spreadsheet. Các web scraper cũng có thể thực hiện thêm các công đoạn phân tích dữ liệu sau
khi đã trích xuất được để phục vụ cho một mục đích nào đó. Một số ứng dụng của web scraping
bao gồm: so sánh giá cả thị trường trực tuyến, nghiên cứu thị trường, thu thập thông tin để
thống kê, theo dõi thông tin thời tiết trên các website dự báo thời tiết, tổng hợp tin tức từ nhiều
website v.v…
Một số kỹ thuật được sử dụng trong web scraping có thể kể ra như:
• So trùng: một kỹ thuật đơn giản nhưng khá hiệu quả để tìm kiếm các phần nội dung chữ
có sự tương đồng với nhau (do nội dung trang web chủ yếu là ở dạng ký tự). Kỹ thuật
này thường sử dụng regular expression (biểu thức chính quy) để so trùng và tìm kiếm.
• Lập trình HTTP: ta có thể lấy được nội dung trang web bằng cách gửi một yêu cầu
HTTP đến web server, cũng giống như cách web browser làm. Đây cũng là một kỹ
thuật được sử dụng bởi các web crawler.

Trang 16
Luận văn tốt nghiệp Xây dựng ứng dụng thu thập dữ liệu tự động từ các website
• Phân tích cấu trúc DOM: phân tích nội dung HTML của web page và xây dựng một cây
DOM (Document Object Model), giúp scraper 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.
2.1.4 Phân loại Web
World Wide Web có thể được phân loại thành hai loại: các trang web tĩnh và các trang
web động. Sriram và Hector [8] đưa ra định nghĩa sau về trang web động:
“Một trang P được gọi là động nếu như một phần hoặc tất cả nội dung của nó được sinh
ra tại thời điểm chạy (tức là sau khi yêu cầu của máy khách được máy chủ nhận) bởi một
chương trình thực thi nằm trên máy chủ hoặc máy khách. Điều này ngược lại với một trang tĩnh
P
1
, khi mà toàn bộ nội dung của P
1
đã tồn tại sẵn trên máy chủ và luôn sẵn sàng được gửi cho
máy khách ngay sau khi một yêu cầu được nhận.”
Nhiều nghiên cứu trước đây [9, 10] đã cho thấy phần lớn nội dung trên Web đều là các
nội dung động. Một trang web động cũng có thể có hai kiểu: động về nội dung (dynamic
content) và động về hình thức thể hiện (dynamic appearance). Những trang web động về hình
thức thể hiện có thể chỉ chứa nội dung tĩnh, nhưng có chứa những đoạn mã chạy ở máy khách,
những đoạn mã này có thể làm thay đổi sự thể hiện của trang web (màu sắc, kích cỡ …). Tuy
nhiên những trang này không nằm trong phạm vi của định nghĩa trên, cũng như trong đề tài
này, do chúng ta chỉ tập trung vào việc làm sao để trích xuất ra nội dung dữ liệu trong các trang
web.
Các trang web động (trong phạm vi định nghĩa trên) cũng có thể được phân loại theo hai
tiêu chí sau: sự thể hiện và cách thức tạo ra [8].
2.1.4.1 Phân loại dựa vào sự thể hiện của tính động
Theo thời gian (temporal dynamism): đây là những trang web mà nội dung của chúng có
thể được thay đổi, cập nhật theo thời gian. Điều này đồng nghĩa với việc: các yêu cầu đến cùng

một trang web, khi được gửi ở hai thời điểm khác nhau có thể sẽ nhận được hai nội dung khác
nhau.
Theo máy khách (client-based dynamism): những trang web có khả năng tùy biến theo
người sử dụng (client) sẽ được xếp vào mục này. Ví dụ một trang tin tức tổng hợp có khả năng
chọn lọc các tin tức khác nhau, tùy thuộc vào sở thích của người sử dụng đang đăng nhập.
Trang 17
Luận văn tốt nghiệp Xây dựng ứng dụng thu thập dữ liệu tự động từ các website
Những trang kiểu này thường không thể trực tiếp truy xuất vào được mà phải vượt qua một
bước xác thực danh tính (authentication).
Theo truy vấn (input dynamism): đây là những trang có nội dung phụ thuộc vào truy vấn
của người sử dụng. Một ví dụ điển hình là những trang có các mẫu nhập liệu (form), chẳng hạn
một trường nhập liệu để tìm kiếm một hoặc nhiều món hàng trong cơ sở dữ liệu của trang web.
Những trang kiểu này cũng không luôn luôn truy xuất trực tiếp được (tùy thuộc vào phương
thức truyền các tham số - GET hoặc POST – chi tiết về vấn đề này sẽ được phân tích ở phần 4),
các trang kết quả nhận được cũng thường có số lượng rất lớn (tùy thuộc số tổ hợp của các tham
số truy vấn). Đây cũng thường là những trang web không thể crawl được hoàn toàn bởi các
crawler, và được gọi là Web ẩn (hidden Web, deep Web, invisible Web).
2.1.4.2 Phân loại dựa vào cách thức tạo ra tính động
Thực thi các chương trình nằm trên máy chủ (server-side programs): Trong kỹ thuật
này, một chương trình sẽ được thực thi trên máy chủ và sinh ra toàn bộ nội dung HTML của
trang web, sau đó được gửi đến máy khách yêu cầu. Ví dụ tiêu biểu cho loại này là CGI hoặc
Java Servlet. Những chương trình phía máy chủ này cũng thường được dùng để xử lý các truy
vấn từ người sử dụng.
Nhúng mã với sự thực thi phía máy chủ (embedded code with server-side execution):
các trang web động sẽ chứa cả nội dung HTML tĩnh cùng với các đoạn mã được nhúng vào
cùng với HTML. Khi một yêu cầu được nhận, các đoạn mã nhúng này sẽ được thực thi trên
máy chủ và sẽ sinh ra các đoạn code HTML thay thế cho chúng. Kỹ thuật này khác kỹ thuật
trên ở chỗ không phải toàn bộ mà chỉ một phần nội dung HTML được sinh động. Các mã
nhúng này có thể là PHP, Java Scriplet, ASP hoặc các mã server-side khác.
Nhúng mã với sự thực thi phía máy khách (có thể có cả sự thực thi ở phía máy chủ)

(embedded code with client-side execution): Với ký thuật này thì các đoạn mã được nhúng
không chạy trên server mà chúng được máy khách tải về và được thực thi trên máy khách. Nếu
mã chỉ chạy trên máy khách thì đó có thể là JavaScript, Java Applet hoặc Flash. Nếu vừa có sự
thực thi ở máy khách và cả ở máy chủ thì đó chính là Ajax, trong trường hợp này mã clien-side
có thể trao đổi thông tin với server thông qua một đối tượng đặc biệt là XMLHttpRequest để có
thể thay đổi nội dung trang web một cách động mà không cần load trang web mới.
Trang 18
Luận văn tốt nghiệp Xây dựng ứng dụng thu thập dữ liệu tự động từ các website
2.1.4.3 Khả năng của các web crawler
Nhìn chung, các web crawler hiện nay hầu hết đều chỉ có thể crawl một phần rất nhỏ của
World Wide Web, đó là những trang web có thể đến được bằng cách đi theo các liên kết
hyperlink. Các crawler này thường phải bỏ qua các trang có tính động theo máy khách (client-
based dynamism) và theo truy vấn (input dynamism). Cũng đã có một vài công trình nghiên cứu
xây dựng các hidden-web crawler như HiWE [8], tuy nhiên đây không phải một vấn đề tầm
thường và cũng vẫn còn đang được tiếp tục nghiên cứu và phát triển. Hình 1 cho thấy cái nhìn
tổng quan về sự phân loại các trang web tĩnh - động, cùng với khả năng của các web crawler
(thương mại) hiện nay.
Thể hiện Nội dung
tĩnh
Nội dung động
Thời gian Client-based Truy vấn
Trang tĩnh hoàn toàn
Không cần xét vì trang tĩnh hoàn toàn không thể
tạo ra nội dung động
Chương trình thực thi server-
side
Không cần
xét vì nội
dung đã là
tĩnh

Mã nhúng thực thi server-
side
Mã nhúng thực thi client-
side
Các crawler truyền thống
(Web nổi)
Một vài crawler (Web ẩn)
Các crawler cá nhân
(Các web tùy biến)
Không có
Hình 2-3. Phân loại web cùng khả năng của các web crawler
2.2 Phân tích sơ bộ
Có thể thấy được rằng, ứng dụng mà đề tài cần xây dựng chính là một chương trình vừa
có thể crawl web một cách tự động, vừa có khả năng bóc tách, trích xuất dữ liệu như một web
scraper. Nhìn chung ứng dụng sẽ cần 2 module chính: crawler module và data extractor module.
Crawler module sẽ giúp ứng dụng “duyệt” nhiều trang web tương tự một cách tự động (ví dụ
Trang 19
Luận văn tốt nghiệp Xây dựng ứng dụng thu thập dữ liệu tự động từ các website
các trang phân trang của cùng một trang danh mục), với mỗi trang web được duyệt qua crawler
module sẽ tải nội dung trang web về và lưu trữ tạm. Nội dung trang web sau đó được chuyển
cho data extractor module, data extractor module có nhiệm vụ phân tích, xử lý nội dung trang
web, chuyển đổi nó sang một cấu trúc trung gian nào đó để thuận tiện cho bước bóc tách, trích
xuất dữ liệu.
Các điểm khác biệt mấu chốt giữa ứng dụng đề tài cần xây dựng và các generic web
crawler hiện nay đó là:
• Ứng dụng không cần phải cố gắng crawl càng nhiều web page trên WWW càng tốt như
các web crawler khác
• Ứng dụng không nhất thiết phải thường xuyên viếng thăm lại các trang web để cập nhật
nội dung
• Ứng dụng phải có tính tùy biến cao, phục vụ cho các mục đích cụ thể chứ không như

các web crawler của các search engine (crawl phần Web nổi để đánh index), như vậy
ứng dụng phải hỗ trợ được cả (một) phần Web ẩn. Vì phải phục vụ cho các mục đích cụ
thể nên ứng dụng cũng cần được “dẫn đường” bởi người sử dụng.
Trang 20
Luận văn tốt nghiệp Xây dựng ứng dụng thu thập dữ liệu tự động từ các website
Các đặc điểm trên dẫn đến hình vẽ sau, thể hiện những phần Web mà thành phần crawler
của ứng dụng có thể crawl được.
Thể hiện Nội dung
tĩnh
Nội dung động
Thời gian Client-based Truy vấn
Trang tĩnh hoàn toàn
Không cần xét vì trang tĩnh hoàn toàn không thể
tạo ra nội dung động
Chương trình thực thi server-
side
Không cần
xét vì nội
dung đã là
tĩnh
Mã nhúng thực thi server-
side
Mã nhúng thực thi client-
side
Các crawler truyền thống
(Web nổi)
Một vài crawler (Web ẩn)
Các crawler cá nhân
(Các web tùy biến)
Không có

Crawler của ứng dụng
trong đề tài
Hình 2-4. Phạm vi của thành phần crawler của ứng dụng trong đề tài
Thành phần data extractor của ứng dụng sẽ không có nhiều khác biệt với các web scraper
khác. Ứng dụng phải có thể bóc tách, trích xuất các dữ liệu (có sự tương đồng, do người sử
dụng đặc tả) một cách tự động.
Ngoài ra, trong lĩnh vực trích xuất thông tin (Information Retrieval, [1]) cũng có một
hướng nghiên cứu khác khá gần gũi với lĩnh vực khai phá dữ liệu (data mining) và trí tuệ nhân
tạo (artificial intelligence). Hướng nghiên cứu này sẽ xây dựng, phát triển các công cụ có khả
năng tự động crawl và trích xuất thông tin một cách hoàn toàn tự động, không cần hoặc cần rất
ít sự can thiệp của con người, và hơn nữa các công cụ này còn có khả năng tự học (machine
learning) thông qua các dữ liệu mẫu [11], nhờ đó nó có thể ứng dụng được trên nhiều loại trang
web có cấu trúc khác nhau một cách tự động. Ưu điểm của hướng tiếp cận này là tính tự động
Trang 21
Luận văn tốt nghiệp Xây dựng ứng dụng thu thập dữ liệu tự động từ các website
cao, có thể chạy được trên nhiều website khác nhau (cùng lĩnh vực) một cách tự động. Tuy
nhiên các công cụ kiểu này thường chỉ có thể sử dụng cho các lĩnh vực cụ thể và phổ biến
(domain-specific), chẳng hạn như lĩnh vực tin tức trực tuyến.
Vì lý do hạn chế về thời gian nên đề tài luận văn này sẽ không đi theo hướng này. Hướng
tiếp cận của đề tài sẽ là xây dựng một ứng dụng có khả năng giải quyết các vấn đề trích xuất
thông tin rất rời rạc và cụ thể. Ứng dụng cũng sẽ được xây dựng như một framework có khả
năng mở rộng được, tùy biến được bởi người sử dụng, để có thể sử dụng cho nhiều loại website
khác nhau, nhược điểm là mỗi khi sử dụng ứng dụng cho một website có cấu trúc khác, người
sử dụng sẽ phải đặc tả lại các thông số đầu vào.
Trang 22
Luận văn tốt nghiệp Xây dựng ứng dụng thu thập dữ liệu tự động từ các website
3 Các kiến thức nền tảng và các công nghệ liên quan
3.1 HTML
HTML (HyperText Markup Language – ngôn ngữ đánh dấu siêu văn bản) là một ngôn
ngữ đánh dấu được thiết kế ra để tạo nên các trang web. HTML được xem như là một ứng dụng

của SGML (Standard Generalized Markup Language – một chuẩn ISO định nghĩa các ngôn ngữ
đánh dấu văn bản tổng quát). HTML được tổ chức World Wide Web Consortium (W3C) duy trì
và là ngôn ngữ đánh dấu cốt lõi của World Wide Web. Phiên bản mới nhất của nó hiện là
HTML 4.01. Tuy nhiên HTML hiện không còn được phát triển tiếp mà người ta đã thay thế nó
bằng XHTML – một chuẩn HTML mở rộng dựa trên XML và có cú pháp chặt chẽ hơn HTML.
Mặc dù vậy nhưng phần lớn các trang web hiện nay vẫn được viết bằng HTML, bởi nhiều
nguyên nhân khác nhau (sử dụng các công cụ soạn thảo HTML cũ, người viết code ngại thay
đổi v.v…).
Một tài liệu HTML được tạo nên bởi các phần tử HTML. Một cách tổng quát, một phần
tử HTML bao gồm 3 thành phần: một cặp thẻ (tags) gồm một thẻ bắt đầu và một thẻ kết thúc;
các thuộc tính (nằm trong thẻ bắt đầu); và toàn bộ phần ký tự, hình ảnh, nội dung thông tin sẽ
được hiển thị lên màn hình. Một phần tử HTML là mọi thứ nằm giữa hai thẻ đầu cuối, tính cả
hai thẻ này. Một thẻ HTML đơn giản là một từ khóa được đặt giữa một cặp hai dấu bé hơn (<)
và lớn hơn (>). Thẻ đóng của một phần tử HTML luôn có một ký tự “/” ngay sau ký tự “<”.
Sau đây là một ví dụ của một phần tử HTML ở dạng tổng quát nhất:
<tag attribute1=”value1” attribute2=”value2”>nội dung</tag>
Có bốn loại phần tử đánh dấu trong HTML:
• Đánh dấu có cấu trúc miêu tả mục đích của phần văn bản (ví dụ, <h1>Football</h1>
sẽ điều khiển phần mềm đọc hiển thị “Football” là tiêu đề cấp một).
• Đánh dấu trình bày miêu tả phần hiện hình trực quan của phần văn bản bất kể chức
năng của nó là gì (ví dụ <b>in đậm</b> sẽ hiển thị thành in đậm).
• Đánh dấu liên kết ngoài chứa phần liên kết từ trang này đến trang kia, đây chính là các
phần tử thể hiện các liên kết hyperlink (ví dụ <a
href=” sẽ hiển thị từ ĐHBK như một liên
kết ngoài đến website www.hcmut.edu.vn).
Trang 23
Luận văn tốt nghiệp Xây dựng ứng dụng thu thập dữ liệu tự động từ các website
• Các phần tử thành phần điều khiển giúp tạo ra các đối tượng điều khiển như các nút
bấm, các ô textbox để nhập liệu.
HTML là ngôn ngữ không phân biệt hoa thường (hai thẻ <td> và <TD> đều là một). Các

phần tử HTML cần có một thẻ mở và một thẻ đóng, tuy nhiên điều này không luôn luôn đúng,
có nhiều phần tử không cần thẻ đóng, ví dụ các thẻ<br>, <hr> và <li>. Ngoài ra khi lồng nhau,
các phần tử HTML cũng không cần thiết phải lồng nhau theo đúng thứ tự (tức là thẻ nào mở
trước thì phải đóng sau) ví dụ sau là hợp lệ trong HTML:
<p>đoạn văn này được <b>in đậm</p></b>
Sự lồng nhau không đúng thứ tự của các phần tử HTML được gọi là overlapping (phủ lên
nhau), mặc dù điều này không được phép trong đặc tả SGML, nhưng lại được chấp nhận bởi
hầu hết các trình duyệt hiện nay.
Từ các đặc điểm trên ta có thể nhận thấy HTML không phải là một ngôn ngữ có cú pháp
chặt chẽ, các đặc điểm như không cần đóng thẻ hoặc không cần lồng nhau đúng thứ tự sẽ là các
trở ngại cho công việc đọc và phân tích văn bản HTML (HTML parsing), đặc biệt nếu sử dụng
phương pháp tìm kiếm so trùng. Chính vì vậy, chúng ta cần phải chuyển đổi nội dung viết bằng
HTML sang một định dạng ngôn ngữ khác có sự chặt chẽ hơn về cú pháp, điều này sẽ đem lại
thuận lợi hơn cho quá trình xử lý về sau. Một ngôn ngữ đánh dấu được định nghĩa ra để thay
thế cho HTML đó chính là XHTML.
3.2 XML
XML (Extensible Markup Language – ngôn ngữ đánh dấu mở rộng) là một ngôn ngữ
đánh dấu mà người sử dụng có thể tự tạo ra các thẻ riêng của mình. Giống như HTML, XML
cũng được dựa trên SGML. Tuy nhiên, XML được thiết kế nhằm mục đích truyền tải và lưu trữ
thông tin, trong khi HTML tập trung vào việc thể hiện thông tin đó như thế nào. Về tính cấu
trúc của nội dung, XML có thể dùng để định nghĩa các cấu trúc ngẫu nhiên tùy ý trong khi
HTML hoàn toàn bị giới hạn.
Ví dụ của một tài liệu XML đầy đủ:
<?xml version=”1.0” encoding=”UTF-8”?>
<students>
<student>
<id>50501352</id>
<full-name>Bill Gates</full-name>
</student>
Trang 24

Luận văn tốt nghiệp Xây dựng ứng dụng thu thập dữ liệu tự động từ các website
</students>
3.3 XHTML
XHTML (Extensible HyperText Markup Language) là một ngôn ngữ đánh dấu có cùng
các khả năng như HTML, nhưng có cú pháp chặt chẽ hơn. XHTML được xây dựng dựa trên
XML và được cho rằng sẽ là ngôn ngữ thay thế cho ngôn ngữ HTML trong tương lai.
Theo tổ chức W3C, khác biệt giữa XHTML 1.0 và HTML 4 về cơ bản thì XHTML phải
là một tài liệu XML chuẩn (well-formed), trong khi HTML không cần phải thỏa điều kiện này.
Cụ thể, một số điểm khác biệt như sau [2]:
3.3.1 Tính chuẩn của một tài liệu XML (well-formed)
XHTML đòi hỏi các tài liệu viết bằng XHTML phải có tính chất well-formed, có nghĩa là
tất cả các thẻ trong tài liệu đều phải có thẻ đóng tương ứng (ngoại trừ các thẻ rỗng được trình
bày cụ thể ở phần sau) và các phần tử phải lồng nhau một cách đúng thứ tự (thẻ nào mở trước
thì phải đóng sau). Ví dụ:
Đúng: các phần tử lồng nhau đúng thứ tự.
<p>một đoạn văn được <em>in nghiêng</em>.</p>
Sai: các phần tử lồng nhau không đúng (overlap).
<p>một đoạn văn được <em>in nghiêng. </p></em>
3.3.2 Tên các phần tử và tên các thuộc tính của phần tử phải ở dạng
chữ in thường
XHTML thừa kế các đặc tính của XML, trong đó có sự phân biệt chữ hoa chữ thường (ví
dụ <td> và <TD> là hai thẻ khác nhau), vì vậy để chuẩn hóa, tên của tất cả các phần tử cũng
như tất cả các thuộc tính của phần tử cần được viết dưới dạng chữ thường.
3.3.3 Các thẻ không rỗng bắt buộc phải có thẻ đóng
Trong HTML 4, một số phần tử được phép viết không cần thẻ đóng. Tuy nhiên XML
không cho phép điều này. Tất cả các phần tử đều phải có thẻ đóng tương ứng ngoại trừ các
phần tử được định nghĩa trong DTD là EMPTY (các phần tử này có thể có thẻ đóng đầy đủ hoặc
được viết ở dạng tắt). Ví dụ:
Trang 25

×