TRƯỜNG ĐẠI HỌC THỦ DẦU MỘTVIỆN KỸ THUẬT – CÔNG NGHỆ BÁO CÁO CUỐI KỲ MÔN KỸ THUẬT LẬP TRÌNH TRONG PHÂN TÍCH DỮ LIỆU CRAWL DỮ LIỆU, LOAD VÀ TÌM KIẾM TRÊN WEBSITE BAOTINTUC.VN, NLD.COM.VN G
Trang 1TRƯỜNG ĐẠI HỌC THỦ DẦU MỘT
VIỆN KỸ THUẬT – CÔNG NGHỆ
BÁO CÁO CUỐI KỲ MÔN KỸ THUẬT LẬP TRÌNH TRONG PHÂN TÍCH DỮ LIỆU
CRAWL DỮ LIỆU, LOAD VÀ TÌM KIẾM TRÊN WEBSITE
BAOTINTUC.VN, NLD.COM.VN
Giảng Viên Hướng Dẫn: ThS Nguyễn Thế Bảo
Lớp : KTCN.CQ05
Bình Dương, tháng 05 năm 2024
Trang 2CHƯƠNG 1 TỔNG QUAN (1đ) 1
1.1 Giới thiệu tổng quan đề tài 1
a Request và Beautifulsoup 3
b Newspaper3K 3
c Flask-SqlAlchemy 3
CHƯƠNG 2 THU THẬP DỮ LIỆU VÀ XÂY DỰNG HỆ THỐNG (6.5đ) 5
1.Mô tả dữ liệu đã thu thập 5
1.2 Phương pháp thu thập: 5
1.3 Khối lượng dữ liệu: 5
2 Xây dựng hệ thống tìm kiếm 6
a Tìm kiếm theo từ khóa 6
b Sắp xếp kết quả tìm kiếm (nếu có) 6
c Xây dựng giao diện hệ thống tìm kiếm 6
CHƯƠNG 3 KẾT LUẬN (0.5đ) 9
1 Kết quả đã làm được 9
2 Hạn chế (chưa làm được) 9
3 Thuận lợi và khó khăn 10
a Thuận lợi 10
b Khó khăn 10
DANH MỤC TÀI LIỆU THAM KHẢO 11
Trang 3DANH MỤC CÁC BẢNG, SƠ ĐỒ, HÌNH
Hình 1 Logo Python 3
Hình 2 Giao diện sql craw 7
Hình 3 Giao diện menu 7
Hình 4 Giao diện trang chủ 8
Hình 5 Giao diện danh mục các bài báo 8
Hình 6 Giao diện chi tiết bài báo 9
LỜI MỞ ĐẦU
Ngày nay, công nghệ thông tin phát triển mạnh mẽ và được ứng dụng rộng rãi trong mọi lĩnh vực Việc tìm kiếm và phân tích dữ liệu trở nên quan trọng hơn bao giờ hết, các trang tin tức điện tử là nguồn cung cấp thông tin chính thống và phong phú Phân tích dữ liệu website tin tức giúp chúng ta có thể nắm bắt được xu hướng
xã hội, đánh giá hiệu quả hoạt động của website
Với kiến thức học được trong học phần "Kỹ thuật lập trình trong phân tích dữ
liệu" giúp em có thể thực hiện đề tài “Crawl dữ liệu, load và tìm kiếm trên website baotintuc.vn, nld.com.vn” Việc thu thập và phân tích dữ liệu từ các trang
web tin tức điện tử như baotintuc có thể mang lại nhiều lợi ích cho việc nghiên cứu
và phân tích dữ liệu, đặc biệt là trong lĩnh vực báo chí, truyền thông và khoa học xã hội
CHƯƠNG 1 TỔNG QUAN (1đ)
1.1 Giới thiệu tổng quan đề tài
Đề tài “Crawl dữ liệu, load và tìm kiếm trên website baotintuc.vn, nld.com.vn” này tập trung vào việc crawl dữ liệu từ trang web baotintuc.vn, nld.com.vn, load vào hệ thống và thực hiện tìm kiếm trên dữ liệu thu thập được.
Trong quá trình nghiên cứu, nhóm thực hiện sẽ sử dụng các phương pháp crawl dữ liệu như Request và Beautiful Soup, cũng như thư viện
Trang 4flask-mysql.connector để thu thập tin tức từ trang web baotintuc.vn, nld.com.vn Sau
đó, sẽ load dữ liệu thu thập được vào cơ sở dữ liệu sử dụng flask- mysql.connector
để lưu trữ và quản lý Cuối cùng, sẽ phát triển một hệ thống tìm kiếm đơn giản để người dùng có thể truy vấn và tìm kiếm thông tin trên dữ liệu đã thu thập
Mục tiêu đề tài:
Xây dựng hệ thống tự động thu thập tin tức từ trang web flask-mysql.connector để phục vụ cho việc nghiên cứu và phân tích dữ liệu
Phát triển hệ thống tìm kiếm đơn giản để người dùng truy vấn và tìm kiếm thông tin trên dữ liệu đã thu thập
Phạm vi đề tài:
Thu thập tin tức từ các chuyên mục chính trên baotintuc.vn, nld.com.vn flask- mysql.connector (Chính trị, Kinh tế, Xã hội, v.v.).
Lưu trữ dữ liệu thu thập được trong cơ sở dữ liệu quan hệ
Phát triển giao diện người dùng đơn giản để truy vấn và tìm kiếm dữ liệu
Đánh giá hiệu quả của hệ thống về tốc độ thu thập dữ liệu, độ chính xác của dữ liệu và hiệu quả tìm kiếm
Tổng quan Python
Python là ngôn ngữ lập trình bậc cao được sử dụng phổ biến trong nhiều lĩnh vực như khoa học dữ liệu, trí tuệ nhân tạo, phát triển web, v.v Python được ưa chuộng bởi tính dễ học, dễ sử dụng, có cộng đồng người dùng lớn và nhiều thư viện
hỗ trợ đa dạng, được phát triển bởi Guido van Rossum vào năm 1989
Python là một ngôn ngữ lập trình đa năng và mạnh mẽ , là một ngôn ngữ bậc cao như C, C++, Java, cho nên có thể được dùng để tạo ra các ứng dụng để giải quyết các vấn đề về số, xử lý văn bản, tạo ra trò chơi, và nhiều thứ khác
Có các môi trường lập trình như: IDLE (Integrated Development and Learning Environment), Visual Studio Code (VSCode), PyCharm
Có khả năng truy cập dữ liệu từ xa thông qua cầu nối API, Database Connectivity
Hỗ trợ các lớp hữu ích, tiện lợi trong lập trình các ứng dụng mạng (Socket) cũng như truy xuất Web thông qua các thư viện Socket Programming
Trang 5Hỗ trợ lập trình phân tán (Remote Method Invocation) cho phép một ứng dụng
có thể được xử lý phân tán trên các máy tính khác nhau qua thư viện RPC (Remote Procedure Call), Celery
Nó có khả năng diễn giải mã nguồn từng dòng, thư viện mở rộng của các gói
mã nguồn mở, độc lập với nền tảng, khả năng biểu đạt, khả năng mở rộng và khả năng nhúng, làm cho nó trở thành lựa chọn lý tưởng cho nhiều dự án phát triển Python thường được sử dụng để phát triển các trang web và phần mềm, tự động hóa các tác vụ, phân tích dữ liệu và trực quan hóa dữ liệu
Ưu điểm của Python:
Dễ học, dễ đọc, dễ viết
Miễn phí và mã nguồn mở
Có cộng đồng người dùng lớn và nhiều thư viện hỗ trợ đa dạng
Phù hợp cho nhiều lĩnh vực khác nhau
Hình 1 Logo Python
Tổng quan về thu thập dữ liệu
Thu nhập dữ liệu là quá trình thu thập thông tin từ các nguồn khác nhau để phục vụ cho mục đích nghiên cứu, phân tích hoặc sử dụng trong các ứng dụng Dữ liệu có thể được thu thập từ nhiều nguồn khác nhau, bao gồm:
Trang web: Sử dụng các công cụ như Beautiful Soup, Scrapy để trích xuất dữ
liệu từ trang web
API: Truy cập các API để lấy dữ liệu từ các dịch vụ trực tuyến.
Cảm biến: Thu thập dữ liệu từ các thiết bị cảm biến.
Khảo sát: Thu thập dữ liệu từ người dùng thông qua các cuộc khảo sát.
Trang 6Phỏng vấn: Thu thập dữ liệu từ người dùng thông qua các cuộc phỏng vấn.
Có nhiều công cụ và kỹ thuật khác nhau có thể được sử dụng để thu nhập dữ liệu Lựa chọn công cụ và kỹ thuật phù hợp sẽ phụ thuộc vào nguồn dữ liệu, định dạng dữ liệu và mục đích thu thập dữ liệu
a Request và Beautifulsoup
Request là một thư viện Python cho phép tương tác với các trang web bằng cách gửi HTTP requests và nhận HTTP responses Beautiful Soup là một thư viện Python để trích xuất dữ liệu từ các tài liệu HTML và XML Chúng ta sẽ sử dụng
Request để tải HTML từ trang web Vietnamnet, sau đó sử dụng Beautiful Soup để
phân tích cú pháp và trích xuất dữ liệu
b Newspaper3K
Newspaper3K là một thư viện Python được thiết kế để extract và phân tích tin tức từ các trang web Thư viện này cung cấp các công cụ để thu thập và phân tích nội dung bài báo từ các URL đã cho Chúng ta có thể sử dụng Newspaper3K để thu thập dữ liệu từ các bài báo trên Vietnamnet
c Flask- mysql.connector
Flask là một micro framework viết bằng Python, được thiết kế để giúp việc phát triển ứng dụng web trở nên dễ dàng và nhanh chóng Flask rất linh hoạt và cho phép bạn tự do cấu trúc dự án của mình theo cách mà bạn muốn, mà không bị ràng buộc bởi các quy ước nghiêm ngặt
MySQL Connector là một thư viện PWython được cung cấp bởi MySQL để kết nối và tương tác với cơ sở dữ liệu MySQL Nó cung cấp một API để thực hiện các thao tác như truy vấn, chèn, cập nhật và xóa dữ liệu từ cơ sở dữ liệu MySQL
Khi kết hợp Flask và MySQL Connector, bạn có thể xây dựng các ứng dụng web có khả năng tương tác với cơ sở dữ liệu MySQL Dưới đây là một ví dụ đơn giản về cách sử dụng Flask và MySQL Connector để kết nối và làm việc với cơ sở
dữ liệu MySQL
Trang 7P a g e | 7
CHƯƠNG 2 THU THẬP DỮ LIỆU VÀ XÂY DỰNG HỆ THỐNG (6.5đ)
1.Mô tả dữ liệu đã thu thập
Trước hết, bạn cần quyết định dữ liệu nào bạn muốn thu thập từ trang web
baotintuc.vn, nld.com.vn Điều này có thể bao gồm các thành phần như:
Tiêu đề bài báo
Nội dung bài báo
Thời gian đăng bài
Tác giả
Thể loại bài báo
Sau khi xác định được dữ liệu cần thu thập, bạn có thể sử dụng các kỹ thuật
như web scraping để tự động thu thập dữ liệu từ trang web baotintuc.vn, nld.com.vn Đảm bảo rằng bạn tuân thủ các quy định về robots.txt và chính sách
của trang web để tránh vi phạm quyền sở hữu trí tuệ hoặc các quy định khác
1.2 Ph ươ ng pháp thu th p: ậ
Cào web: Sử dụng các thư viện/công cụ như Beautiful Soup (Python),
Scrapy (Python), Go Scrapy (Go), v.v để thu thập dữ liệu từ website
baotintuc.vn, nld.com.vn.
Lưu trữ dữ liệu: Lưu trữ dữ liệu đã thu thập vào cơ sở dữ liệu (MySQL,
MongoDB, Elasticsearch, v.v.)
1.3 Kh i l ố ượ ng d li u: ữ ệ
Số lượng bài báo: Tùy thuộc vào phạm vi thu thập (toàn bộ website hoặc
một số chuyên mục nhất định) và thời gian thu thập
Dung lượng dữ liệu: Tùy thuộc vào nội dung của bài báo (hình ảnh, video,
v.v.)
Thu Thập Và Xử Lý Dữ Liệu Từ Website Báo VnExpress
Trang 8P a g e | 8
2 Xây dựng hệ thống tìm kiếm
a Tìm kiếm theo từ khóa
Phân tích từ khóa:
Xử lý tiền xử lý văn bản: Loại bỏ dấu chấm câu, chuyển đổi chữ hoa sang chữ thường, chia nhỏ văn bản thành các từ khóa
Loại bỏ từ khóa dừng (stop words): Các từ khóa phổ biến không mang nhiều ý nghĩa như "tôi", "của", "và", v.v
Tạo danh mục từ khóa đồng nghĩa: Từ khóa có nghĩa tương tự nhau
Tìm kiếm trong cơ sở dữ liệu:
Sử dụng truy vấn full-text search (tìm kiếm toàn văn bản) để tìm kiếm các bài báo có chứa từ khóa
Có thể sử dụng các thuật toán xếp hạng để tăng độ chính xác của kết quả tìm kiếm (BM25, TF-IDF, v.v.)
b Sắp xếp kết quả tìm kiếm (nếu có)
Theo độ liên quan: Sắp xếp các bài báo có chứa từ khóa tìm kiếm nhiều nhất ở đầu danh sách
Theo thời gian: Sắp xếp các bài báo mới nhất trước các bài báo cũ hơn
Theo lượt xem: Sắp xếp các bài báo được xem nhiều nhất trước các bài báo ít được xem hơn
Theo đánh giá: Sắp xếp các bài báo có đánh giá cao nhất trước các bài báo có đánh giá thấp hơn
c Xây dựng giao diện hệ thống tìm kiếm
Giao diện sql craw :
Hình 2 Giao diện sql craw
Thu Thập Và Xử Lý Dữ Liệu Từ Website Báo VnExpress
Trang 9P a g e | 9
Giao diện menu :
Hình 3 Giao diện menu
Giao diện người dùng (UI) đơn giản, dễ sử dụng
Hiển thị danh mục menu để chọn
Giao diện trang chủ :
Thu Thập Và Xử Lý Dữ Liệu Từ Website Báo VnExpress
Trang 10P a g e | 10
Hình 4 Giao diện trang chủ
Sau khi nhập nội dung tìm kiếm vào thanh tìm kiếm thì sẽ hiển thị ra nội dung bài báo như sau :
Hình 5 Giao diện danh mục các bài báo
Thu Thập Và Xử Lý Dữ Liệu Từ Website Báo VnExpress
Trang 11P a g e | 11
Giao diện chi tiết bài báo :
Hình 6 Giao diện chi tiết bài báo
CHƯƠNG 3 KẾT LUẬN (0.5đ)
1 Kết quả đã làm được
Đã thu thập dữ liệu từ website baotintuc.vn, nld.com.vn bao gồm tiêu đề,
tóm tắt, nội dung, hình ảnh, tác giả, v.v
Đã xây dựng hệ thống tìm kiếm cho phép người dùng tìm kiếm các bài báo theo từ khóa, và sắp xếp kết quả tìm kiếm
Đã triển khai giao diện người dùng đơn giản, dễ sử dụng
Đã thử nghiệm hệ thống và đạt được kết quả khả quan
2 Hạn chế (chưa làm được)
Chưa tích hợp các tính năng nâng cao như tìm kiếm theo thời gian,
Thu Thập Và Xử Lý Dữ Liệu Từ Website Báo VnExpress
Trang 12P a g e | 12
Chưa tối ưu hóa hiệu suất hệ thống để tiết kiệm tài nguyên máy chủ
Chưa cập nhật dữ liệu mới thường xuyên để đảm bảo kết quả tìm kiếm chính xác
Chưa triển khai các tính năng nâng cao như tìm kiếm theo ngữ cảnh, đề xuất bài báo liên quan, v.v
3 Thuận lợi và khó khăn
a Thuận lợi
Có sẵn nhiều nguồn dữ liệu miễn phí trên website baotintuc.vn, nld.com.vn
Có nhiều thư viện/công cụ hỗ trợ thu thập và xử lý dữ liệu
Có nhiều tài liệu hướng dẫn và cộng đồng hỗ trợ phát triển hệ thống tìm kiếm
b Khó khăn
Đối mặt với các rào cản pháp lý và chính sách của trang web baotintuc.vn, nld.com.vn khi thu thập dữ liệu.
Phải xử lý dữ liệu không chuẩn, bị lỗi hoặc không đồng nhất từ trang web Đòi hỏi kiến thức vững về lập trình và quản lý cơ sở dữ liệu để triển khai hệ thống một cách hiệu quả
Khó khăn trong việc xử lý các định dạng dữ liệu khác nhau (hình ảnh, video, v.v.)
Cần đảm bảo hệ thống tìm kiếm có khả năng xử lý lượng truy cập lớn và trả
về kết quả tìm kiếm nhanh chóng
Thu Thập Và Xử Lý Dữ Liệu Từ Website Báo VnExpress
Trang 13P a g e | 13
DANH MỤC TÀI LIỆU THAM KHẢO
1 Website báo baotintuc.vn <https://www baotintuc vn/ >
2 Website báo nld.com.vn <https://www nld.com vn/ >
3 O’reilly Natural Language Processing with Python.
4 VIBLO Tf-idf algorithm, Text retrieval and Search engines <
https://viblo.asia/p/tf-idf-algorithm-text-retrieval-and-search-engines-1Je5EmGY5nL?
fbclid=IwAR1IQi8VR3IADY8J7aDYK6Vp4q4tX2l8SATfFlRrCPxVFKs-JJCT1ZrI3h4>
5 Thor Pham Blog Sentiment Analysis sử dụng Tf-Idf áp dụng cho ngôn ngữ
tiếng việt < https://thorpham.github.io/blog/2018/04/14/setmentation/>
6 Kartheek Akella Implementing the TF-IDF Search Engine
Thu Thập Và Xử Lý Dữ Liệu Từ Website Báo VnExpress