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

13 337 2
Xây dựng ứng dụng thu thậ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

ĐẠ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 Đề 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 Luận văn tốt nghiệp Xây dựng ứng dụng thu thập dữ liệu web tự động TP. HỒ CHÍ MINH, 12/2009 2 Luận văn tốt nghiệp Xây dựng ứng dụng thu thập dữ liệu web tự động 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 3 Luận văn tốt nghiệp Xây dựng ứng dụng thu thập dữ liệu web tự động 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 4 Luận văn tốt nghiệp Xây dựng ứng dụng thu thập dữ liệu web tự động 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 5 Luận văn tốt nghiệp Xây dựng ứng dụng thu thập dữ liệu web tự động 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. 6 Luận văn tốt nghiệp Xây dựng ứng dụng thu thập dữ liệu web tự độ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ể 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 7 Luận văn tốt nghiệp Xây dựng ứng dụng thu thập dữ liệu web tự động 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 8 Luận văn tốt nghiệp Xây dựng ứng dụng thu thập dữ liệu web tự động 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 9 Luận văn tốt nghiệp Xây dựng ứng dụng thu thập dữ liệu web tự động 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ì ? … 10 [...]...Luận văn tốt nghiệp Xây dựng ứng dụng thu thập dữ liệu web tự động 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... 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 12 Luận văn tốt nghiệp Xây dựng ứng dụng thu thập dữ liệu web tự động 7 Tổng kết 8 Tài liệu tham khảo 13 ... Data extracting module Các component, các giải thu t và workflow giải quyết các vấn đề con … 11 Luận văn tốt nghiệp Xây dựng ứng dụng thu thập dữ liệu web tự động 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á... 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 . 10 4 Xây dựng ứng dụng 11 4.1 Phân tích 11 3 Luận văn tốt nghiệp Xây dựng ứng dụng thu thập dữ liệu web tự động 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. Tidy 3.6.2 cURL Sử dụng để hỗ trợ giải quyết các vấn đề gì ? … 10 Luận văn tốt nghiệp Xây dựng ứng dụng thu thập dữ liệu web tự động 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. văn tốt nghiệp Xây dựng ứng dụng thu thập dữ liệu web tự động 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 5 Luận văn tốt nghiệp Xây dựng ứng dụng thu thập dữ liệu

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

Mục lục

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

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

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

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

    2.2 Phân tích sơ bộ

    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.6 Các công nghệ và thư viện hỗ trợ khác

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

Tài liệu cùng người dùng

Tài liệu liên quan