You are on page 1of 16

TRƯỜNG ĐẠI HỌC KINH TẾ QUỐC DÂN

VIỆN CÔNG NGHỆ THÔNG TIN VÀ KINH TẾ SỐ


--------------------------------------------------

BÁO CÁO ĐỀ TÀI BÀI TẬP NHÓM


ĐỀ TÀI: Xây dựng chương trình ứng dụng Crawler dữ liệu từ trang Web
với dữ liệu cho thuê phòng trọ trên địa bàn thành phố Hà Nội

Nhóm thực hiện: : Nhóm 9

Thành viên: :

Lớp học phần: : Công nghệ đa phương tiện_01

Hà Nội, ngày 09 tháng 01 năm 2023

1
MỤC LỤC
CHƯƠNG 1: ĐẶT VẤN ĐỀ.........................................................................................................................4
1.1. Tìm hiểu vấn đề..................................................................................................................................4
1.2. Mục tiêu, nội dung, phương pháp nghiên cứu của đề tài....................................................................4
1.3. Đối tượng và phạm vi nghiên cứu.......................................................................................................5
CHƯƠNG 2: KHẢO SÁT BÀI TOÁN.........................................................................................................6
2.1. Mô tả bài toán.....................................................................................................................................6
2.2. Phân tích nghiệp vụ bài toán...............................................................................................................6
2.3. Đề xuất mô hình, quy trình nghiệp vụ bài toán...................................................................................7
CHƯƠNG 3: ĐỀ XUẤT GIẢI PHÁP CÔNG NGHỆ GIẢI QUYẾT BÀI TOÁN.......................................8
3.1. Mô hình...............................................................................................................................................8
3.2. Thuật toán...........................................................................................................................................8
CHƯƠNG 4: TRIỂN KHAI THỰC HIỆN GIẢI QUYẾT BÀI TOÁN......................................................10
4.1. Phân tích sơ bộ..................................................................................................................................10
4.2. Các bước chi tiết...............................................................................................................................10
CHƯƠNG 5: ĐÁNH GIÁ KẾT QUẢ.........................................................................................................13
5.1. Hiệu suất website..............................................................................................................................13
5.2. Chất lượng dữ liệu............................................................................................................................13
CHƯƠNG 6: KẾT LUẬN...........................................................................................................................15
6.1. Tóm tắt..............................................................................................................................................15
6.2. Học được và hướng phát triển tiếp theo............................................................................................15

2
BẢNG PHÂN CÔNG CÔNG VIỆC

STT Họ và Tên Công việc

Xây dựng trang web hiển


1 Hà Quý Dương
thị dữ liệu crawl
Sử dụng các công cụ xử
2 Hoàng Văn Phong lý dữ liệu, ngôn ngữ lập trình
để crawl dữ liệu
Tổng hợp thông tin, kiến
3 Nguyễn Anh Linh thức bài học, xây dựng báo
cáo về đề tài
Import dữ liệu từ file
4 Phạm Trường Việt CSV vào hệ quản trị cơ sở
dữ liệu để lưu trữ

5 Bế Minh Hoàng …

3
CHƯƠNG 1: ĐẶT VẤN ĐỀ

1.1. Tìm hiểu vấn đề

Tìm phòng trọ là một trong những nhu cầu quan trọng của sinh viên hay những
người lao động ngoại tỉnh đang sinh sống, học tập và làm việc tại các thành phố
lớn của Việt Nam. Việc tìm phòng trọ từng tốn rất nhiều thời gian và công sức của
những người tìm phòng. Tuy nhiên, ngày nay với sự phát triển nhanh chóng của
công nghệ thông tin thì việc tìm kiếm phòng trọ đã trở nên dễ dàng hơn bao giờ
hết. Một trong những các hiệu quả để tìm phòng trọ đó là tìm thông qua các trang
web giới thiệu phòng trọ. Các trang web này cung cấp cho người đi thuê phòng
những thông tin hữu ích về chất lượng của phòng trọ, giúp họ dễ dàng đưa ra quyết
định thuê phòng hơn.

Tuy nhiên, số lượng trang web như vậy Internet ngày càng tăng, khiến cho việc tìm
kiếm và phân tích trở nên khó khăn. Do đó, việc khai thác dữ liệu phòng trọ là một
vấn đề cần được quan tâm.

Đối với người đi thuê phòng, việc khai thác dữ liệu phòng trọ giúp khách hàng:

 Tìm kiếm được những thông tin hữu ích phòng trọ, giúp khách hàng đưa ra
quyết định lựa chọn phòng trọ phù hợp.

 So sánh chất lượng của các phòng trọ khác nhau, giúp khách hàng tìm được
phòng trọ có chất lượng tốt nhất với mức giá hợp lý.

Đối với các phòng trọ, việc khai thác dữ liệu phòng trọ giúp các phòng trọ:

 Nắm bắt được nhu cầu của người đi thuê phòng, từ đó cải thiện chất lượng
dịch vụ để đáp ứng nhu cầu của họ.

 Phát hiện những điểm mạnh, điểm yếu của dịch vụ phòng trọ, từ đó có kế
hoạch khắc phục những điểm yếu và phát huy những điểm mạnh.

1.2. Mục tiêu, nội dung, phương pháp nghiên cứu của đề tài

4
Mục tiêu của đề tài: Mục tiêu của đề tài là phát triển một hệ thống crawl dữ liệu từ
các trang web cho thuê phòng trọ, đáp ứng các yêu cầu sau:

 Có thể thu thập được lượng dữ liệu lớn trong thời gian ngắn.
 Có thể loại bỏ các dữ liệu rác.
 Có thể trích xuất các thông tin cần thiết, bao gồm:
o Địa chỉ phòng trọ
o Giá thuê phòng trọ
o Diện tích phòng trọ
o Số phòng ngủ
o Số phòng vệ sinh
o Các tiện ích đi kèm

Nội dung của đề tài: Đề tài bao gồm các nội dung chính sau:

 Nghiên cứu các thuật toán crawl hiệu quả cho các trang web cho thuê phòng
trọ.
 Nghiên cứu các kỹ thuật xử lý dữ liệu sau khi crawl.
 Xây dựng hệ thống crawl dữ liệu.

Phương pháp nghiên cứu của đề tài: Đề tài sử dụng các phương pháp nghiên cứu
sau:

 Nghiên cứu lý thuyết: Nghiên cứu các tài liệu tham khảo về crawl dữ liệu,
các trang web cho thuê phòng trọ,...
 Nghiên cứu thực nghiệm: Xây dựng và thử nghiệm hệ thống crawl dữ liệu.

1.3. Đối tượng và phạm vi nghiên cứu

Đối tượng nghiên cứu: các trang web cho thuê phòng trọ.

Phạm vi nghiên cứu: bao gồm các trang web cho thuê phòng trọ của Việt Nam.

5
CHƯƠNG 2: KHẢO SÁT BÀI TOÁN

2.1. Mô tả bài toán

Bài toán crawl dữ liệu từ các trang web cho thuê phòng trọ là bài toán thu thập dữ
liệu từ các trang web này, bao gồm các thông tin như:

 Tiêu đề bài viết cho thuê phòng


 Địa chỉ bài viết cho thuê phòng
 Giá phòng cho thuê
 Hình ảnh phòng cho thuê
 Diện tích phòng cho thuê
 Địa chỉ phòng cho thuê

2.2. Phân tích nghiệp vụ bài toán

Bài toán crawl dữ liệu từ các trang web cho thuê phòng trọ có thể được phân tích
thành các nghiệp vụ sau:

 Thu thập danh sách các trang web cho thuê phòng trọ từ các trình duyệt như
Google, FireFox, Edge,…
 Thu thập dữ liệu từ các trang web: Đây là nghiệp vụ chính của bài toán. Quá
trình thu thập dữ liệu từ các trang web cần thực hiện theo các bước sau:
o Truy cập vào trình duyệt
o Truy cập vào trang web
o Lấy nội dung trang web
o Xử lý nội dung trang web để trích xuất các thông tin cần thiết
 Lưu trữ dữ liệu: Dữ liệu thu thập được cần được lưu trữ trong một cơ sở dữ
liệu để có thể truy xuất và sử dụng sau này.

2.3. Đề xuất mô hình, quy trình nghiệp vụ bài toán

6
Dựa trên phân tích nghiệp vụ bài toán, chúng ta có thể đề xuất mô hình, quy trình
nghiệp vụ bài toán như sau:

Mô hình:

Mô hình của bài toán crawl dữ liệu từ các trang web cho thuê phòng trọ bao gồm
các thành phần sau:

 Trình duyệt: Trình duyệt được sử dụng để truy cập vào các trang web.
 Công cụ xử lý dữ liệu: Ngôn ngữ lập trình Python, thư viện Scrapy
 Cơ sở dữ liệu: Sử dụng hệ quản trị cơ sở dữ liệu SQL Server

Quy trình nghiệp vụ:

Quy trình nghiệp vụ của bài toán crawl dữ liệu từ các trang web cho thuê phòng trọ
được mô tả như sau:

 Truy cập vào trình duyệt


 Truy cập trang web cần thu thập dữ liệu
 Lấy nội dung trang web
 Xử lý nội dung trang web và trích xuất các thông tin cần thiết
 Lưu trữ dữ liệu

Quy trình này được thực hiện tuần tự, lặp lại cho đến khi thu thập được tất cả dữ
liệu cần thiết từ các trang web.

Các lưu ý:

 Trong quá trình thu thập dữ liệu, cần lưu ý các vấn đề sau:
o Hạn chế truy cập quá nhiều vào các trang web, để tránh bị chặn
o Xử lý các dữ liệu rác, dữ liệu không cần thiết
 Trong quá trình lưu trữ dữ liệu, cần lưu ý các vấn đề sau:
o Sử dụng cấu trúc dữ liệu phù hợp để lưu trữ dữ liệu
o Đảm bảo an toàn dữ liệu
7
CHƯƠNG 3: ĐỀ XUẤT GIẢI PHÁP CÔNG NGHỆ GIẢI
QUYẾT BÀI TOÁN

3.1. Mô hình

Mô hình của bài toán crawl dữ liệu từ các trang web cho thuê phòng trọ bao gồm
các thành phần sau:

 Trình duyệt: Trình duyệt được sử dụng để truy cập vào các trang web.
 Công cụ xử lý dữ liệu: Công cụ xử lý dữ liệu được sử dụng để trích xuất các
thông tin cần thiết từ các trang web.
 Cơ sở dữ liệu: Cơ sở dữ liệu được sử dụng để lưu trữ dữ liệu thu thập được.

Trình duyệt: Chrome

Công cụ xử lý dữ liệu: Python, Scrapy

Cơ sở dữ liệu: SQL Server

3.2. Thuật toán

Thuật toán crawl dữ liệu từ các trang web cho thuê phòng trọ cần giải quyết các
vấn đề sau:

 Xây dựng danh sách các trang web cần crawl: Danh sách này có thể được
xây dựng theo các cách sau:
o Tìm kiếm trên Google
o Sử dụng các công cụ chuyên dụng
 Xác định các liên kết cần crawl: Liên kết cần crawl là các liên kết dẫn đến
các trang web có chứa dữ liệu cần thu thập. Có nhiều cách để xác định các
liên kết cần crawl, như:
o Sử dụng các biểu thức chính quy
o Sử dụng các thuật toán học máy

8
 Thu thập dữ liệu từ các trang web: Quá trình thu thập dữ liệu từ các trang
web cần thực hiện theo các bước sau:
o Khởi tạo trình duyệt
o Truy cập vào trang web
o Lấy nội dung trang web
o Xử lý nội dung trang web để trích xuất các thông tin cần thiết
 Lưu trữ dữ liệu: Dữ liệu thu thập được cần được lưu trữ trong một cơ sở dữ
liệu để có thể truy xuất và sử dụng sau này.

Dưới đây là một số thuật toán crawl dữ liệu từ các trang web cho thuê phòng trọ có
thể được sử dụng:

 Thuật toán breadth-first search (BFS): Thuật toán này duyệt các trang web
theo thứ tự từ trên xuống dưới, từ trái sang phải.
 Thuật toán depth-first search (DFS): Thuật toán này duyệt các trang web
theo thứ tự từ dưới lên trên, từ phải sang trái.
 Thuật toán: Tìm kiếm tốt nhất - đầu tiên: là tìm kiếm theo chiều rộng được
hướng dẫn bởi hàm đánh giá.

9
CHƯƠNG 4: TRIỂN KHAI THỰC HIỆN
GIẢI QUYẾT BÀI TOÁN

4.1. 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ụ 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.

4.2. Các bước chi tiết

Bước 1: Xác Định Trang Web Đích:

10
Lựa chọn một trang web hoặc nhiều trang web cung cấp thông tin về cho thuê
phòng trọ ở thành phố Hà Nội, như các trang web bất động sản, diễn đàn nhà đất,
hoặc trang web chuyên về cho thuê nhà trọ.
Bước 2: Phân Tích Cấu Trúc HTML:
Sử dụng trình duyệt và công cụ (Chrome Developer Tools) để xem nguồn
HTML của trang web.
Xác định cấu trúc HTML của trang web, vị trí các thẻ, class, id chứa thông tin
về phòng trọ.
Bước 3: Lựa Chọn Ngôn Ngữ và Thư Viện:
- Chọn ngôn ngữ lập trình: Python
- Sử dụng thư viện: Scrapy
Bước 4: Xác Định Dữ Liệu Cần Thu Thập:
Xác định các thông tin quan trọng như giá phòng, địa chỉ, diện tích, tiện ích,
mô tả chi tiết.
Quyết định cách bạn sẽ tổ chức dữ liệu thu thập được.
Bước 5: Phương Pháp Trích Xuất Dữ Liệu:
Sử dụng các phương pháp như trích xuất theo thẻ HTML, class, id để lấy thông
tin cụ thể từ trang web.
Xử lý các trường hợp đặc biệt, ví dụ: nếu giá phòng có ký hiệu đơn vị, cần
chuyển đổi sang số.
Bước 6: Quy Trình Crawler:
Xác định quy trình điều hướng qua các trang, xử lý phân trang (nếu có).
Bước 7: Xử Lý JavaScript (Nếu Cần):
Kiểm tra xem trang web sử dụng JavaScript để tải dữ liệu không.
Nếu có, sử dụng thư viện Scrapy để thực hiện các thao tác JavaScript cần thiết.
Bước 8: Xử Lý Bảo Mật và Đăng Nhập (Nếu Cần):
Nếu trang web yêu cầu đăng nhập để truy cập thông tin, xác định cách xử lý
đăng nhập sử dụng requests hoặc thư viện tương tự.

11
Bước 9: Lưu Trữ Dữ Liệu:
Xác định cách lưu trữ dữ liệu thu thập được, sử dụng cơ sở dữ liệu SQL.
Bước 10: Kiểm Thử và Tối Ưu Hóa:
Thực hiện kiểm thử đầy đủ để đảm bảo rằng ứng dụng Crawler hoạt động
chính xác.
Tối ưu hóa hiệu suất của Crawler, chẳng hạn như xử lý đồng thời nhiều yêu
cầu.
Bước 11: Giao Diện Người Dùng:
Xây dựng giao diện người dùng nếu muốn hiển thị thông tin thu thập được một
cách trực quan và dễ sử dụng.

12
CHƯƠNG 5: ĐÁNH GIÁ KẾT QUẢ

5.1. Hiệu suất website

Hiệu suất website được đánh giá dựa trên các yếu tố sau:
 Thời gian tải trang: Thời gian cần thiết để website tải xong và hiển thị cho
người dùng.
 Tương tác người dùng: Khả năng của người dùng tương tác với website một
cách mượt mà và nhanh chóng.
 Khả năng mở rộng: Khả năng của website đáp ứng được lượng truy cập lớn.
Để đánh giá hiệu suất website, chúng ta có thể sử dụng các công cụ như Google
Lighthouse, GTmetrix, WebPageTest,...
Kết quả đánh giá hiệu suất website của ứng dụng Crawler được trình bày trong
bảng sau:
Yếu tố Kết quả

Thời gian crawl dữ liệu 1-2p/website

Thời gian tải trang web Đã có giao diện hoàn chỉnh, chưa up lên
server mạng cục bộ
Tương tác người dùng Mượt mà, không có hiện tượng giật lag

Khả năng mở rộng Có thể đáp ứng lượng truy cập lớn

Nhìn chung, hiệu suất website của ứng dụng Crawler đạt được các yêu cầu đề ra.
Thời gian tải trang ở mức chấp nhận được, tương tác người dùng mượt mà và khả
năng mở rộng tốt.

5.2. Chất lượng dữ liệu

Chất lượng dữ liệu được đánh giá dựa trên các yếu tố sau:

13
 Tính đầy đủ: Dữ liệu thu thập được đầy đủ các thông tin cần thiết.
 Tính chính xác: Dữ liệu thu thập được chính xác, không có sai sót.
 Tính thống nhất: Dữ liệu thu thập được được thống nhất về định dạng và
cách trình bày.

Để đánh giá chất lượng dữ liệu, chúng ta có thể sử dụng các phương pháp sau:

 Kiểm tra thủ công: Kiểm tra từng trường dữ liệu để đảm bảo tính đầy đủ,
chính xác và thống nhất.

Kết quả đánh giá chất lượng dữ liệu của ứng dụng Crawler được trình bày trong
bảng sau:

Yếu tố Kết quả

Tính đầy đủ Đạt yêu cầu

Tính chính xác Đạt yêu cầu

Tính thống nhất Đạt yêu cầu

Nhìn chung, chất lượng dữ liệu của ứng dụng Crawler đạt được các yêu cầu đề ra.
Dữ liệu thu thập được đầy đủ, chính xác và thống nhất.

14
CHƯƠNG 6: KẾT LUẬN

6.1. Tóm tắt

Với các nội dung và kết quả được trình bày trong báo cáo, chúng ta có thể thấy
rằng đề tài đã đạt được các mục tiêu đề ra. Ứng dụng Crawler đã được xây dựng
thành công, đáp ứng được các yêu cầu về hiệu suất và chất lượng dữ liệu.

6.2. Học được và hướng phát triển tiếp theo

Từ quá trình thực hiện đề tài, chúng tôi đã học được nhiều kiến thức mới về crawl
web, xử lý dữ liệu và xây dựng ứng dụng web. Một số kiến thức và kỹ năng nổi bật
bao gồm:

 Kiến thức về các thuật toán crawl web, cách xác định các liên kết cần crawl,
cách xử lý JavaScript và bảo mật.
 Kiến thức về các thư viện xử lý dữ liệu như Scrapy, Beautiful Soup,...
 Kiến thức về các công cụ kiểm tra dữ liệu như Screaming Frog SEO Spider,
Xenu's Link Sleuth,...

Về hướng phát triển tiếp theo của đề tài, chúng tôi có một số đề xuất như sau:

 Tăng cường khả năng mở rộng của ứng dụng, đáp ứng được lượng truy cập
lớn hơn.
 Thêm các tính năng mới cho ứng dụng, chẳng hạn như phân tích dữ liệu, lọc
dữ liệu,...
 Tích hợp ứng dụng với các dịch vụ khác, chẳng hạn như Google Maps,
Google Search,...

Chúng tôi tin rằng đề tài sẽ tiếp tục được phát triển và hoàn thiện trong tương lai,
góp phần mang lại những lợi ích thiết thực cho người dùng.

15
16

You might also like