EuP - Web Automation
1. Tổng quan
Web Automation cho phép xây dựng các chương trình tự động mô phỏng hành vi của người dùng trên trình duyệt, thực hiện các thao tác như truy cập website, nhập dữ liệu, nhấn nút, chờ kết quả và trích xuất thông tin một cách chính xác và nhất quán.
2. Kiến trúc

3. Chi tiết
3.1 Cấu hình

Doctype : NxWebAutomation Settings
Domain: địa chỉ tới sever docker Scrape
Max Active Jobs: số lượng queue tối đa khi chạy (luôn luôn giữ cố định lượng queue này, khi 1 queue chạy xong thì queue khác được thêm vào)
Scrape Error Notify Email: email nhận thông báo khi sever docker Scrape không hoạt động
Api Key Captcha: api key để giải captcha bởi dịch vụ 2Captcha
Api Key Google AI: api key của Gemini
3.2 Tạo Template
3.2.1 Tạo NxWebAutomation Function

Bước 1: Tạo tên chức năng tại NxWebAutomation Function
Bước 2: Khai báo các tham số đầu vào tại Input Variable, đầu ra tại Output Variable
3.2.2 Tạo NxWebAutomation Template
Tab: Template

Function : Chọn chức năng vừa tạo ở mục 3.1.1 để lấy ra tham số đầu vào và ra tương ứng với chức năng

Doctype: Chọn doctype tương ứng
Docname: Chọn giá trị tương ứng
Url: Đường dẫn url của trang web cần lấy dữ liệu
Scrpit: Code python để thực hiện các thao tác trên web(lấy dựa vào mục 4)
Test Script: kiểm tra trực tiếp đoạn script đó có chạy và lấy dữ liệu đúng không
Tab: Setting

Frequency (/minutes): Thời gian cách nhau sau mỗi lần chạy
Time run lastest: Thời gian chạy gần đây nhất
Retry Error Number: Số lần chạy lại nếu queue đó chạy bị lỗi
Active: Trạng thái hoạt động của template
Headless: Khi chạy playwright thì hệ thống sẽ mở trình duyệt. Nếu tích chọn thì có mwor trình duyệt, không tích là không mở trình duyệt. Không chọn sẽ nhanh hơn nhưng có trường hợp không mở trình duyệt thì không lấy được các thẻ HTML
Call API: Nếu tích chọn thì có nghĩa là sẽ chạy bằng cách gọi API mà không phải chạy bằng playwright. và viết code vào đây.

3.3 Thực thi
3.3.1 Tạo Queue
Mỗi chức năng sẽ tạo 1 schedule trong file hooks.py
Start -> Tìm tất cả Template đang được Active và đúng điều kiện thời gian -> Tạo NxWebAutomation Queue với giá trị đầu vào tại Input value

Time Start: thời gian bắt đầu thực hiện chạy queue
Time End: thời gian kết thúc chạy queue
Time Diff: mất bao nhiêu thời gian để thực thi xong queue này
Status: Not Send, Success, Error
Input value: Giá trị đầu vào
Output value: dữ liệu lấy về
Error: log lỗi khi chạy
3.3.1 Run Queue
Hệ thống tự động 1h chạy các queue có trạng thái Not Send và Error trong vòng 2 ngày kể từ ngày tạo đến thời điểm hiện tại
4. Tạo script
Bước 1: Cài đặt Playwright CRX

Bước 2: Vào tiện ích trên trình duyệt -> Tùy chọn khác (hình 3 chấm) -> Chọn "Mở bảng điều khiển bên"
Bước 3: Vào tiện ích trên trình duyệt -> Tùy chọn khác (hình 3 chấm) -> Chọn "Attach to playwright recorder"
Bước 4: Thực hiện thao tác như bình thường, log sẽ xuất hiện khi thao tác.
5. Các trường hợp lỗi
Lỗi phát sinh có thể bắt nguồn từ các nguyên nhân sau:
Trang web thay đổi giao diện , thay đổi API -> Viết lại Script , API
Sever docker Scrape không chạy, đầy bộ nhớ, CPU -> Khởi động lại sever( Hiện tại đang ở chế độ 5 ngày restart 1 lần)
Lỗi Captcha -> sử dụng dịch vụ bên thứ 3 là 2Captcha để giải(https://2captcha.com/)
Bị chặn IP do gửi liên tục request tới trang của nhà cung cấp -> Đổi IP, giới hạn số lần gửi, thời gian gửi