Trong tiêủ luận này, chúng ta sẽ tìm hiểu về việc scraping dữ liệu từ trang web Fox News bằng cách sử dụng ngôn ngữ lập trình python và các thư viện hỗ trợ.1.2 Công cụ và thư viện1.2.1 N
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠOTRƯỜNG ĐH SƯ PHẠM KỸ THUẬT TP.HCM
KHOA ĐIỆN-ĐIỆN TỬ
- -
MÔN HỌC: LẬP TRÌNH PYTHON
BÁO CÁO ĐỀ TÀI CUỐI KỲ
Giáo viên hướng dẫn: Nguyễn Duy Thảo Sinh viên: Nguyễn Nhật Tùng
Trang 31 SCRAPING DATA
1.1 GIới thiệu
Trong thời đại kỹ thuật số hiện nay, việc thu thập dữ liệu từ các trang web trở nên quan trọng để nắm bắt thông tin xu hướng Trong tiêủ luận này, chúng ta sẽ tìm hiểu về việc scraping dữ liệu từ trang web Fox News bằng cách sử dụng ngôn ngữ lập trình python và các thư viện hỗ trợ.
1.2 Công cụ và thư viện
1.2.1 Ngôn ngữ lập trình python: Ngôn ngữ lập trình mạnh mẽ và linh hoạt, được sử dụng rộng rãi trong việc phát triển ứng dụng web, giao diện, và thu thập dữ liệu 1.2.2 Resquests: Thư viện python cho phép gửi yêu cầu HTTP đơn giản và thu thập nội dung từ trang web.
1.2.3 Beautifulsoup: Thư viện python cho phép phân tích cú pháp HTML và XML để trích xuất thông tin từ trang web
1.3 Quy trình scraping dữ liệu từ Fox News
1.3.1 Xác định url của trang web scraping: Đầu tiên ta cần xác định URL của trang web Fox News mà ta muốn thu thập dữ liệu.
1.3.2 Gửi yêu cầu HTTP đến trang web: Sử dụng thư viện Resquests, ta gửi yêu cầu GET đến trang web và nhận phản hồi chứ nội dung HTML
Trang 41.3.3 Phân tích cú pháp HTML: Sử dụng thư viện BeautifulSoup, ta phân tích cúu pháp HTML trên trang web Fox News để lấy dữ liệu các bài báo, nội dung, tác giải cũng như các bình luận.
Trang 5Phân tch cú pháp HTML trên trang Fox News đ biêết để ược đường dâẫn bài báo.
1.3.4 Tìm vị trí và trích xuất dữ liệu: Sau khi phân tích cú pháp HTML của trang Fox News ta sẽ dựa vào đó để lấy dữ liệu cần thiết.
Lâếy d li u tác gi sau khi phân tch đữ ệ ả ược cú pháp HTML.
1.3.5 Sử lý dữ liệu theo đúng định dạng mong muốn (link, tittle, author, link author, data published, topic, content) sau đó ghi dữ liệu vào file csv
Trang 62 DATABASE
2.1Thiết kế database:
Cơ sở dữ liệu được thiết kế và xây dựng dựa trên hệ quản trị cơ sở dữ liệu MySQL ( phát triển bởi Oracle )
- Database bao gồm 3 quan hệ: Article ( bài báo ), Author ( Tác giả ), Comment ( lời bình luận )
- Liên kết giữa quan hệ Author và quan hệ Article là liên kết 1 – nhiều Liên kết giữa quan hệ Article và quan hệ Comment là liên kết 1 – nhiều - Quan hệ Article gồm 5 thuộc tính chính : Title ( tiêu đề ) , Publish_Time ( thời gian đăng ) , Genre ( thể loại ), Content ( Nội dung) ,Author_Name (tên tác giả ) Trong đó Title là khóa chính còn Author_Name là khóa ngoại
- Toàn bộ dữ liệu bên trong database được import thông qua file csv.
2.2Tác động database:
Trang 7- Để sử dụng Python tác động vào cơ sở dữ liệu, thư viện PyMySQL được sử dụng
- Các thao tác với cơ sở dữ liệu bao gồm : Tạo kết nối ( CONNECT ) Xử lý ngôn ngữ SQL ( QUERY )
- Các thông số yêu cầu để tạo kết nối : host ( thiết bị đầu cuối ) , user ( tài khoản người dung ) , password ( mật khẩu ) , database ( cơ sở dữ liệu muốn kết nối tới )
- Hàm QUERY sẽ xử lý script với script được viết bằng ngôn ngữ SQL.
- Để nhập lượng lớn dữ liệu từ file csv vào bên trong cơ sở dữ liệu, chúng ta chạy những lệnh SQL Shell theo quy chuẩn cấu trúc của file csv
Trang 8-Cách tạo ra một UI như vậy
+Thiết kế giao diện bằng công cụ QT design:
Giới thiệu xơ về công cụ QT designer
Trang 9Đây là nơi các công cụ như nút nhấn, label, textbox được lấy ra:
Trang 10Object inspector là nơi chứa tất cả đối tượng mà chúng ta thêm vào trong UI
Trang 11Property editor được sử dụng để điều chỉnh các thuộc tính của một đối tượng cụ thể: Trong đó có các thuộc tính như font chữ, cỡ chữ, căn lề, …
- Đây là 1 file buộc phải khỏi tạo và được bỏ chung với folder chưa file ui
- Đây là nơi chưa các file hình ảnh cũng như icon, nếu bạn muốn hiển thị được lên file UI.
- File này cũng sẽ được chuyển thành file Resource_rc.py và được import vào chương trình chính để chạy được các file hình ảnh và icon trong chương trình.
- Ưu điểm của việc tạo file qrc là khi source code được chuyển qua máy tính khác thì chỉ cần giữ nguyên folder và chuyển qua thì các file hình ảnh trong UI sẽ không bị ảnh hưởng, còn nếu các bạn dùng địa chỉ cố định cho các file hình ảnh thì khi chuyển qua máy khác các file hình ảnh này không tồn tại hoặc có tồn tại mà sai địa chỉ=> dẫn đến việc các hình ảnh và icon sẽ bị biến mất sau khi chạy chương trình.
MỘT SỐ ĐỐI TƯỢNG CẦN QUAN TÂM TRONG PHẦN OBJECT INSPECTOR - Các nút nhấn (push button) là các nút nhấn được lấy ra từ trong widget box, chúng ta
có thể tác động nhấn vào nó khi chạy chương trình
- Label là một cái nhãn trong đó cái text bên trong nhãn sẽ được chúng ta điều chỉnh cho phù hợp với chương trình chính.
- Stack widgets là những frame được ghi đè lên nhau và được đánh số thứ tự, nó được ứng dụng để thiết kế màn hình hoạt động khi bạn tác động đến một đối tượng nào đó ( ví dụ là 1 nút nhấn) thì phần frame với index (1) sẽ hiện lên , tương tự với các frame khác.
- Plaintextedit là một boxtext có thể được sử dụng để lấy input từ người dùng - Textbrowser cũng là được một boxtext nhưng người dùng không viết lên được mà là
boxtext dành cho nhà phát triển hiển thị các thông tin cần thiết.
- Table là một bảng được cấu hình số cột và số hàng và nhà phát triển sử dụng table để hiển thị thông tin trong database được lấy về từ trang web
- SAU KHI TẠO XONG GIAO DIỆN TA CÓ SẼ SUẤT FILE PYTHON: - Tiếp theo chúng ta bắt đầu tác động vào nút nhấn
Trang 12-Nút homeButton được clicked thì sẽ đươc kết nối đến hàm switch_widget1
-Hàm switch_widget1 sẽ lấy index của frame hiện tại và dung hàm setCurrentIndex để hiển thị frame với index tương ứng
-Nút findButton khi được clicked sẽ được kết nối với hàm serch_machine
-Ban đầu sẽ xóa các content trong tablewidget sau đó lấy các kí tự mà người dung viết vào bảng plaintextedit lưu vào một biến search sau đó gọi query các item có trong trường dữ liệu Author_Name có tồn tại chứ cái đầu được viết trong boxtext sau đó hiển thị nó lên trên tablewidget
-Nút dataButton được clicked thì sẽ được kết nối đến hàm summarise
Trang 13-Đầu tiên nó sẽ hiển thị trong command line là “you are finding content relate: + với kí tự được người dùng điền trong plaintextedit sau đó nó sẽ vẫn lưu vào biến search Tiếp theo kết nối với api của openai và gửi một câu hỏi là Sumary + search
- Và response trả về sẽ được ghi lên trên textbrowser bằng hàm setHtml().