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.
101 trang |
Chia sẻ: tuandn | Lượt xem: 3621 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Luận văn Xây dựng ứng dụng thu thập dữ liệu tự động từ các Website, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ĐẠ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
TP. HỒ CHÍ MINH, 1/2010
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
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
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.
MỤC LỤC
1 Giới thiệu 11
1.1 Mở đầu 11
1.2 Yêu cầu và mục tiêu của đề tài 11
1.2.1 Yêu cầu 11
1.2.2 Mục tiêu 12
1.3 Bố cục báo cáo 12
2 Tìm hiểu và phân tích sơ bộ 13
2.1 Tìm hiểu các kiến thức tổng quan 13
2.1.1 World Wide Web 13
2.1.2 Web Crawler 14
2.1.3 Web Scraper 15
2.1.4 Phân loại Web 16
2.1.4.1 Phân loại dựa vào sự thể hiện của tính động 16
2.1.4.2 Phân loại dựa vào cách thức tạo ra tính động 17
2.1.4.3 Khả năng của các web crawler 18
2.2 Phân tích sơ bộ 18
3 Các kiến thức nền tảng và các công nghệ liên quan 22
3.1 HTML 22
3.2 XML 23
3.3 XHTML 24
3.3.1 Tính chuẩn của một tài liệu XML (well-formed) 24
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 24
3.3.3 Các thẻ không rỗng bắt buộc phải có thẻ đóng 24
3.3.4 Các thuộc tính luôn phải ghi rõ giá trị 25
3.3.5 Các phần tử rỗng 25
3.4 XPath 26
3.4.1 Cú pháp và ngữ nghĩa 26
3.4.1.1 Cú pháp rút gọn 26
3.4.1.2 Cú pháp đầy đủ 27
3.4.2 Axis specifier 27
3.4.3 Node test 28
3.4.4 Predicate 28
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 29
3.5.1 HTML Tidy 29
3.5.2 cURL 31
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
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 60
6.3.1 Đặc tả thông tin chung cho Bot 60
6.3.2 Đặc tả các trang 61
6.3.3 Đặc tả bảng cơ sở dữ liệu 66
6.4 Cấu trúc cơ sở dữ liệu 67
6.4.1 Danh sách các bảng 67
6.4.2 Chi tiết các bảng 67
6.5 Front 70
6.5.1 Bot Manager 70
6.6 Core 72
6.6.1 Robot 73
6.6.1.1 Quản lý tiến trình của Robot 73
6.6.1.2 Thực hiện quy trình thu thập dữ liệu 75
6.6.2 Crawler 77
6.6.2.1 Simple Crawler: 78
6.6.2.2 Advanced Crawler: 79
6.6.2.2.1 wdeBrowser 79
6.6.2.2.2 Ví dụ 81
6.6.3 Extractor 82
6.6.3.1 Expression Extractor 82
6.6.3.2 XPath Extractor 83
6.6.3.3 Selector Extractor 83
7 Sử dụng và đánh giá 85
7.1 Các bước cơ bản để sử dụng ứng dụng 85
7.1.1 Xác định trang web cần thu thập dữ liệu 87
7.1.2 Xác định kiểu lấy dữ liệu (crawler engine) cho Robot 87
7.1.3 Xác định các tùy chọn cho Robot 87
7.1.4 Xây dựng cấu hình cụ thể cho từng trang con 88
7.1.5 Xác định cấu trúc cơ sở dữ liệu lưu trữ: 89
7.2 Các ví dụ cụ thể từ đơn giản đến phức tạp 90
7.2.1 Ví dụ 1 90
7.2.2 Ví dụ 2: 92
7.2.3 Ví dụ 3 95
8 Đánh giá chung 98
8.1 Các kết quả đạt được 98
8.2 Các hạn chế của ứng dụng 99
8.3 Hướng phát triển 100
9 Tổng kết 101
10 Tài liệu tham khảo 102
MỤC LỤC HÌNH ẢNH
Hình 21. World Wide Web 13
Hình 22. Sơ đồ hoạt động của một web crawler đơn giản 14
Hình 23. Phân loại web cùng khả năng của các web crawler 18
Hình 24. Phạm vi của thành phần crawler của ứng dụng trong đề tài 20
Hình 41. Một trang web danh bạ 34
Hình 51. Sơ đồ Use Case của ứng dụng WDE 41
Hình 52. Kiến trúc tổng quan của WDE 43
Hình 53. Kiến trúc của thành phần FRONT 44
Hình 54. Mô hình MVC 45
Hình 55. Sơ đồ các trạng thái của Bot 46
Hình 56. Quá trình tạo mới một Bot 48
Hình 57. Quá trình chỉnh sửa một Bot 49
Hình 58. Quá trình xóa một Bot 49
Hình 59. Quá trình nhận dữ liệu đặc tả đầu vào XML 50
Hình 510. Kiến trúc thành phần CORE 51
Hình 511. Quá trình hoạt động tổng quát của ROBOT 52
Hình 512. Crawler gồm có 2 crawler engine là Simple và Advanced 53
Hình 513. Extractor gồm có 3 Extractor con 54
Hình 61. Giao diện chính của WDE 57
Hình 62. Giao diện nhập / chỉnh sửa dữ liệu đặc tả đầu vào XML 58
Hình 63. Giao diện quản lý hoạt động Bot và xem dữ liệu trích xuất được 59
Hình 64. Sơ đồ cấu trúc cơ sở dữ liệu của chương trình 67
Hình 65. Sơ đồ tuần tự của tác vụ start Bot 70
Hình 66. Sơ đồ tuần tự của tác vụ resume Bot 71
Hình 67. Sơ đồ tuần tự của tác vụ pause Bot 71
Hình 68. Sơ đồ tuần tự của tác vụ stop Bot 72
Hình 69. Sơ đồ class giữa Robot - Crawler - Extractor 72
Hình 610. Sơ đồ tuần tự thể hiện quá trình hoạt động tổng quát của Robot 73
Hình 611. Quá trình thu thập dữ liệu tổng quát 76
Hình 612. Sơ đồ class của các Crawler 77
Hình 613. Sơ đồ tuần tự hoạt động của Simple Crawler 78
Hình 614. Sơ đồ tuần tự hoạt động của Advanced Crawler 79
Hình 615. Sơ đồ class của các Extractor 82
Giới thiệu
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.
Yêu cầu và mục tiêu của đề tài
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.
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ể
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.
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
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.
Tìm hiểu các kiến thức tổng quan
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 21. World Wide Web
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.
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 22. Sơ đồ hoạt động của một web crawler đơn giản
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.
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.
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.
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 P1, khi mà toàn bộ nội dung của P1 đã 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].
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. 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 t