Chương 1: Cơ sở lý thuyết - Trình bày lý thuyết cơ bản các công nghệ được sử dụng trong hệ thống. Chương 2: Phân tích và đặc tả yêu cầu - Phân tích và đặc tả các yêu cầu của bài toán, từ đó đưa ra các luồng hoạt động và mô hình ca sử dụng. Chương 3: Thiết kế và xây dựng hệ thống - Thiết kế tổng quan kiến trúc hệ thống, cách áp dụng công nghệ để xây dựng và cài đặt hệ thống. Chương 4: Cài đặt và thử nghiệm - Trình bày kết quả thử nghiệm, nhận xét, đánh giá của hệ thống.
Kết luận và định hướng phát triển - Trình bày kết quả đề tài đạt được, từ đó đưa ra định hướng phát triển của hệ thống sau này.5 Đối tượng và phạm vi nghiên cứu Đối tượng nghiên cứu: xây dựng hệ thống thu thập và quản lý dữ liệu tuyển dụng hỗ trợ cho sv đhhp trong tìm kiếm việc làm sau tốt nghiệp, phần mềm mã nguồn mở ASP.NET MVC framework và các công cụ lập trình, hệ quản trị cơ sở dữ liệu MySQL. Phạm vi nghiên cứu: - Địa điểm: Khoa Công nghệ thông tin trường Đại học Hải Phòng - Thời gian: Từ 8/2023 đến 05/2024 - Lĩnh vực thực hiện: Giải pháp phần mềm công nghệ thông tin trên nền tảng website. CƠ SỞ LÝ THUYẾT Hệ thống thu thập và quản lý dữ liệu được xây dựng dựa trên hai framework chính, VueJS dùng để xây dựng phía client (máy khách) và FastAPI để xây dựng phía server (máy chủ), sử dụng MySQL làm cơ sở dữ liệu chính. Bên cạnh đó, hệ thống sử dụng Selenium Webdriver và Scrapy để xây dựng các công cụ tự động và thu thập dữ liệu web, sau đó phần dữ liệu sẽ được làm mịn và đẩy lên Elasticsearch để phục vụ cho các mô đun tìm kiếm.
Giới thiệu về FastAPI FastAPI7 là một framework được viết bằng ngôn ngữ Python ra đời vào cuối năm 2018, được thiết kế để xây dựng các web API có hiệu năng cao, dễ mở rộng, đơn giản và hỗ trợ tốt cho việc hoàn thiện sản phẩm. Do được xây dựng trên nền tảng của hai thư viện vô cùng nổi tiếng Pydantic8 và Starlette9 nên việc xử lý dữ liệu phức tạp trở nên vô cùng đơn giản, hơn thế nữa nhờ Starlette mà FastAPI có hiệu năng cao, được xem như framework có tốc độ nhanh nhất trong số viết bằng Python. Một số tính năng và đặc điểm nổi bật của FastAPI FastAPI cung cấp rất nhiều những tính năng nổi bật có thể kể đến như sau [1]: Tự động sinh tài liệu API FastAPI cung cấp tính năng tự động sinh tài liệu dựa trên các lược đồ API theotiêu chuẩn của OpenAPI10, cho phép người dùng có thể tìm hiểu thêm về API thôngqua hai lựa chọn giao diện tài liệu: ● Giao diện tài liệu tương tác cung cấp bởi SwaggerUI11 cho phép người dùngcó thể gọi, kiểm thử các API trực tiếp trên trình duyệt, đây là tính năng được sử dụng và yêu thích nhất của đại đa số lập trình viên. ● Giao diện tài liệu thay thế cung cấp bởi Redoc được thiết kế khoa học, dễ dùng cho người mới.
Bên cạnh đó chúng ta hoàn toàn có thể chỉnh sửa tài liệu API trực tiếp trên tậptin “openapi.json” có trong hệ thống. 2 Hỗ trợ lập trình bất đồng bộ Do được phát triển dựa trên phiên bản Python 3.6+, FastAPI cung cấp các cơ chế thực thi bất đồng bộ thông qua cú pháp async/await và coroutines kết hợp với thư viện aiomysql 12giúp quá trình thiết lập kết nối và truy vấn cơ sở dữ liệu trở nên nhanh chóng hơn rất nhiều, qua đó tăng cường hiệu năng và tốc độ phản hồi của máy chủ. Hỗ trợ các trình soạn thảo Nếu đã quen với việc sử dụng Flask13, một web microframework của Python chắc hẳn trải nghiệm autocomplete (tự động hoàn thành) trên Visual Studio Code14sẽ khá tệ và đôi khi mất rất nhiều thời gian để tra lại tài liệu. Điều này hoàn toàn không còn xảy ra trên FastAPI, toàn bộ framework được xây dựng để thỏa mãn tính năng này, tự động hoàn thành hoạt động ở mọi nơi, kể cả các đối tượng JSON lồngnhau nhiều tầng được tiếp nhận từ yêu cầu tới máy chủ nó vẫn hoạt động tốt.
Qua đó, hạn chế việc lập trình viên phải mở lại tài liệu để tra cứu và việc phát triển sẽ được đẩy nhanh gấp nhiều lần. Hệ thống dependency injection (gắn sự phụ thuộc) “Dependency injection” được hiểu như một cách để khai báo các công việc, yêu cầu cần đáp ứng để mã lệnh của chúng ta có thể hoạt động được, mà ở đây nó chính là các hàm chức năng của API. FastAPI giúp chúng ta thực hiện tất cả các công việc còn lại để tích hợp các hàm “dependencies” vào API một cách tự động mà không cần cài đặt gì thêm. Hơn nữa các “dependency” còn có thể có các “dependency” con, từ đó xây dựng lên một cây “dependency” theo hướng cấu trúc.
Việc này có ý nghĩa rất lớn cho việc tận dụng các hàm, mã lệnh được chia sẻ ở nhiều nơi, các kết nối với cơ sở dữ liệu từ đó giảm thiểu tối đa việc trùng lặp mã lệnh. Bên cạnh đó, tính năng tự động tạo tài liệu và chuẩn hóa dữ liệu hoạt động tốt cho các biến, tham số được truyền trong các “dependency”. Kế thừa các tính năng của Starlette Bản chất FastAPI là một lớp con của Starlette, một framework nhẹ dựa trên ASGI để xây dựng các dịch vụ web hỗ trợ bất đồng bộ trên Python, vì vậy nó có khả năng tương thích hoàn toàn với Starlette. Nhờ đó, FastAPI hỗ trợ đầy đủ Websocket, 3 session (phiên làm việc), cookie (bộ nhớ đệm dài hạn), CORS,.
và giúp tăng hiệu năng một cách ấn tượng. Kế thừa các tính năng của Pydantic Nhắc đến FastAPI, ta không thể không nhắc đến Pydantic như một thư viện xác thực dữ liệu được cài đặt ở lớp bên dưới. Nó cung cấp khả năng xác thực (validated), thêm chú thích (annotated) dữ liệu có cấu trúc phức tạp như: đối tượng JSON lồng nhau nhiều tầng, … Chỉ cần trang bị kiến thức về các kiểu (type) trong Python, chúng ta hoàn toàn có thể sử dụng được Pydantic mà không yêu cầu phải tìm hiểu thêm bất cứ ngôn ngữ định nghĩa lược đồ mới(schema definition language). Mặt khác, chúng cũng hoạt động tốt với các thư viện, bộ công cụ ORM bên ngoài dùng cho việc thao tác với cơ sở dữ liệu như SQLAlchamy15, các lớp Pydantic bao gồm các cặp trường và kiểu dữ liệu có thể được cài đặt như sau:.
from pydantic import BaseModel 2. is_admin: bool 6. Giới thiệu về Selenium Selenium là một bộ công cụ kiểm thử tự động (mã nguồn mở) mạnh mẽ dành cho các ứng dụng chạy trên nền web, hỗ trợ đa số các trình duyệt phổ biến hiện nay như Google Chrome 12+, Firefox 3+, Microsoft Edge. Bên cạnh đó Selenium có thể tương thích tốt với nhiều ngôn ngữ lập trình như Python, Javascript, C#, Ruby, Java, Kotlin đây là một thế mạnh của Selenium khi so sánh với các công cụ có chức năngtương tự như Katalon Studio 16.
Selenium không chỉ là một công cụ độc lập mà nó được chia thành ba thành phần riêng biệt [2]: Selenium WebDriver: Là một web framework sử dụng các WebDriver APIs cung cấp bởi các trình duyệt độc lập giúp người dùng có thể điều khiển trình 4 duyệt và thực hiện các ca kiểm thử dễ dàng. Do được xây dựng trên kiến trúc client (máy khách) - server (máy chủ), Selenium cho phép người dùng có thể viết các mã lệnh bằng nhiều ngôn ngữ khác nhau và chạy trên nhiều nền tảng, trình duyệt khác nhau. ● Selenium IDE: Là một phần mềm tiện ích của Selenium có thể dễ dàng cài đặt trên trình duyệt Chrome hoặc Firefox, cho phép người dùng tạo và phát triển các ca kiểm thử dựa trên hai chức năng ghi lại (record) hành động của người dùng và phát (run) lại chúng. ● Selenium Grid: Là một công cụ hỗ trợ thực hiện các ca kiểm thử song songtrên nhiều thiết bị và nhiều nền tảng khác nhau giúp tiết kiệm rất nhiều thời gian cho quá trình kiểm thử.
Trong khuôn khổ của đề tài này, đo đặc tính của hệ thống chỉ sử dụng Selenium WebDriver nên tôi sẽ tập trung trình bày chi tiết hơn ở phần sau đây của đề tài. Kiến trúc và cách hoạt động của Selenium Webdriver Hình 1. Kiến trúc tổng quản của Selenium WebDriver Selenium WebDriver xây dựng trên kiến trúc client (máy khách) - server (máy chủ) với bốn thành phần chính [3]: ● Selenium client libraries: Là các thư viện được phát triển bởi đội ngũ Selenium cho phép tương tác với WebDriver APIs bằng nhiều ngôn ngữ lập trình như: Python, Java, C#, Ruby, Javascript, Kotlin. 5 ● JSON Wire Protocol: hoạt động như một REST API cung cấp các cơ chế truyền tải dữ liệu giữa máy khách và máy chủ trên HTTP Server.
Nó hỗ trợ nhiều kiểu cấu trúc dữ liệu như mảng, đối tượng. ● Browser drivers: Để tránh việc để lộ các chức năng được cài đặt trên trình duyệt cho các phần mềm bên thứ ba ở đây là Selenium, mỗi trình duyệt sẽ cung cấp cho người dùng các driver (trình điều khiển) của riêng chúng. Các driver này sẽ thao tác trực tiếp với trình duyệt thông qua kết nối được bảo mật. ● Browser: Selenium chỉ có thể hoạt động trên các trình duyệt, cho dù chúngđược cài đặt trực tiếp trên máy khách hoặc trên máy chủ, một số trình duyệt phổ biến được Selenium hỗ trợ như: Google Chrome, FireFox, Safari,.
Để hiểu rõ hơn về cách hoạt động phía dưới của Selenium WebDriver, tôi sẽ trình bày dựa trên một ví dụ đơn giản như sau: 1. from selenium import webdriver 2.get("https://www.com/") Khi chúng ta thực thi mã lệnh trên, một cửa sổ trình duyệt sẽ được bật và tự động điều hướng vào trang chủ của Google. Bản chất, khi các mã lệnh được chạy, Selenium gọi API được cài đặt trong thư viện Selenium ở máy khách để kết nối với HTTP Server của driver trên trình duyệt thông qua giao thức JSON Wire (cung cấpcác RESTful API), cụ thể ở đây API POST: /session/:sessionId/url (giúp điều hướngtới một URL mới). Khi driver của trình duyệt nhận được URL, nó sẽ truyền yêu cầu này tới trực tiếp trình duyệt thật và các câu lệnh sẽ được thực thi.
Một số tính năng và đặc điểm nổi bật của Selenium WebDriver Là một công cụ được sinh ra để kiểm thử tự động các chương trình chạy trên nền web phổ biến nhất hiện nay, Selenium WebDriver có một số ưu điểm như sau: ● Tương thích nhiều ngôn ngữ: Đây là một công cụ mã nguồn mở cho phép người dùng có thể phát triển trên rất nhiều ngôn ngữ lập trình như : Python, Java, Javascript, Ruby, C#, Kotlin.