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

Xây dựng ứng dụng thu thập

13 337 2
Tài liệu đã được kiểm tra trùng lặp

Đ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 13
Dung lượng 187 KB

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

Nội dung

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 d

Trang 1

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

Đề tài Xây dựng ứng dụng thu thập

dữ liệu tự động từ các Website

GVHD: ThS Đặng Trần Trí GVPB:

-o0o -SVTH 1: Lê Quang Minh 50501668 SVTH 2: Nguyễn Trung Kiên 50501352

Trang 2

TP HỒ CHÍ MINH, 12/2009

Trang 3

MỤC LỤC

1 Giới thiệu 6

1.1 Mở đầu 6

1.2 Yêu cầu và mục tiêu của đề tài 6

1.2.1 Yêu cầu 6

1.2.2 Mục tiêu 7

1.3 Bố cục báo cáo 7

2 Tìm hiểu, phân tích sơ bộ và hướng tiếp cận 7

2.1 Tìm hiểu các kiến thức tổng quan 7

2.1.1 World Wide Web 7

2.1.2 Web Crawler 8

2.1.3 Web Scraper 8

2.2 Phân tích sơ bộ 9

2.3 Các giải pháp đã có (ưu và nhược) 10

2.4 Hướng tiếp cận và giải pháp của nhóm 10

3 Các công nghệ liên quan 10

3.1 HTML 10

3.2 XML 10

3.3 XHTML 10

3.4 XPath 10

3.5 PHP 10

3.6 Các công nghệ và thư viện hỗ trợ khác 10

3.6.1 HTML Tidy 10

3.6.2 cURL 10

4 Xây dựng ứng dụng 11

4.1 Phân tích 11

Trang 4

4.1.1 Quá trình thu thập dữ liệu tổng quan 11

4.1.2 Các chức năng chính của ứng dụng 11

4.2 Thiết kế 11

4.2.1 Kiến trúc tổng quan 11

4.2.2 Chi tiết các thành phần ứng dụng 11

4.3 Hiện thực 11

4.3.1 Môi trường phát triển ứng dụng 11

4.3.2 Giao diện sử dụng 11

4.3.3 Đặc tả dữ liệu đầu vào bằng XML 11

4.3.3.1 Cấu trúc tổng quát của file cấu hình XML 11

4.3.3.2 Chi tiết các thành phần (element) 11

4.3.4 Web crawling module 11

4.3.5 Data extracting module 11

4.3.6 Các vấn đề được giải quyết 12

4.3.6.1 Trích xuất các dữ liệu sử dụng phân trang tĩnh 12

4.3.6.2 Trích xuất các dữ liệu sử dụng phân trang động 12

4.3.6.3 Lưu dữ liệu trích xuất được vào cơ sở dữ liệu do người dùng đặc tả 12

4.3.6.4 Tạm dừng quá trình thực thi, lưu lại để chạy tiếp ở một lần khác 12

4.3.6.5 Khả năng xử lý dữ liệu đã trích xuất được bằng custom script 12

4.3.6.6 … 12

5 Sử dụng và đánh giá 12

5.1 Các bước tổng quát để sử dụng ứng dụng 12

5.2 Các ví dụ cụ thể từ đơn giản đến phức tạp 12

5.3 Kết quả và đánh giá 12

6 Các hạn chế và hướng phát triển sau này 12

6.1 Các hạn chế 12

Trang 5

6.2 Hướng phát triển lên sau này 12

7 Tổng kết 13

8 Tài liệu tham khảo 13

Trang 6

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 7

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

TODO

2 Tìm hiểu, phân tích sơ bộ và hướng tiếp cận

Để 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 để 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 [2] 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

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

Trang 8

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)

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

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

Trang 9

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 [5] 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 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

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: crawling module và scraping module Crawling module sẽ giúp ứng dụng “duyệt” nhiều trang web tương tự một cách tự động (ví dụ 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 crawling module sẽ tải nội dung trang web về và lưu trữ tạm Nội dung trang web sau đó được

Trang 10

chuyển cho scraping module, scraping 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 Cuối cùng là một module phụ hỗ trợ lưu trữ lại các dữ liệu đã thu thập được Để

có thể vận hành được, ứng dụng cũng cần một số dữ liệu đầu vào được cung cấp từ người dùng

2.3 Các giải pháp đã có (ưu và nhược)

2.4 Hướng tiếp cận và giải pháp của nhóm

3 Các công nghệ liên quan

3.1 HTML

Các hạn chế ?

3.2 XML

3.3 XHTML

Giải quyết được các hạn chế của HTML…

3.4 XPath

3.5 PHP

3.6 Các công nghệ và thư viện hỗ trợ khác

3.6.1 HTML Tidy

3.6.2 cURL

Sử dụng để hỗ trợ giải quyết các vấn đề gì ? …

Trang 11

4 Xây dựng ứng dụng

4.1 Phân tích

4.1.1 Quá trình thu thập dữ liệu tổng quan

Trong toàn bộ quá trình chung, các phần nào tự động được, các phần nào con người phải làm (đặc tả) ?

4.1.2 Các chức năng chính của ứng dụng

Giới thiệu các chức năng chính

4.2 Thiết kế

Các sơ đồ mô tả kiến trúc, thiết kế các module của ứng dụng …

4.2.1 Kiến trúc tổng quan

4.2.2 Chi tiết các thành phần ứng dụng

4.3 Hiện thực

4.3.1 Môi trường phát triển ứng dụng

4.3.2 Giao diện sử dụng

4.3.3 Đặc tả dữ liệu đầu vào bằng XML

4.3.3.1 Cấu trúc tổng quát của file cấu hình XML

4.3.3.2 Chi tiết các thành phần (element)

4.3.4 Web crawling module

Các component, các giải thuật và workflow giải quyết các vấn đề con …

4.3.5 Data extracting module

Các component, các giải thuật và workflow giải quyết các vấn đề con …

Trang 12

4.3.6 Các vấn đề được giải quyết

4.3.6.1 Trích xuất các dữ liệu sử dụng phân trang tĩnh

4.3.6.2 Trích xuất các dữ liệu sử dụng phân trang động

4.3.6.3 Lưu dữ liệu trích xuất được vào cơ sở dữ liệu do người dùng

đặc tả 4.3.6.4 Tạm dừng quá trình thực thi, lưu lại để chạy tiếp ở một lần

khác 4.3.6.5 Khả năng xử lý dữ liệu đã trích xuất được bằng custom script 4.3.6.6 ….

5 Sử dụng và đánh giá

5.1 Các bước tổng quát để sử dụng ứng dụng

5.2 Các ví dụ cụ thể từ đơn giản đến phức tạp

5.3 Kết quả và đánh giá

6 Các hạn chế và hướng phát triển sau này

6.1 Các hạn chế

6.2 Hướng phát triển lên sau này

Trang 13

7 Tổng kết

8 Tài liệu tham khảo

Ngày đăng: 22/06/2014, 20:46

TỪ KHÓA LIÊN QUAN

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

w