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