Web scraping tut sử dụng Selenium & Python (phần 13)

Logging vào một website

Logging vào một website theo chương trình với Selenium là một cách thức mạnh mẽ để tự động hóa các nhiệm vụ cái
yêu cầu xác thực người dùng, như post các cập nhật hay truy cập dữ liệu tùy theo người dùng. Trong phần này, chúng
ta sẽ thấy làm cách nào log vào Hacker News, minh họa một cách tiếp cận chung cái có thể được áp dụng cho các
websites khác.

login
Các bước để xác thực:
1. Điều hướng tới login page: Sử dụng phương thức driver.get() để hướng trình duyệt tới login page.
2. Nhập vào username và password:
Định vị trường nhập vào username và sử dụng element.send_keys() để nhập vào username. Làm tương tự cho trường
password.
3. Đệ trình credentials:
Nhận dạng nút login theo selector của nó và sử dụng element.click() để đệ trình login form.
Hãy xem code:

from selenium import webdriver

# Set up the Chrome WebDriver
DRIVER_PATH = ‘/path/to/chromedriver’
driver = webdriver.Chrome(executable_path=DRIVER_PATH)

# Navigate to the login page
driver.get(“https://news.ycombinator.com/login”)

# Enter username
username_field = driver.find_element_by_xpath(“//input[@type=’text’]”)
username_field.send_keys(“YOUR_USERNAME”) # Replace YOUR_USERNAME with your username

# Enter password
password_field = driver.find_element_by_xpath(“//input[@type=’password’]”)
password_field.send_keys(“YOUR_PASSWORD”) # Replace YOUR_PASSWORD with your password

# Click the login button
login_button = driver.find_element_by_xpath(“//input[@value=’login’]”)
login_button.click()

# Ensure to add error handling and cleanup
# Continue with other tasks or close the driver
driver.quit()

Xác thực sau login là then chốt để khẳng định liệu xác thực có thành công. Cái này đòi hỏi check cho các phần tử
hay thông điệp cái chỉ ra trạng thái login:
+ Check cho các thông điệp lỗi: Tìm kiếm cho các phần tử UI cái có thể hiển thị như “Wrong password” để chỉ thất
bại login.
+ Khẳng định có mặt của các phần tử tùy theo người dùng: Ví dụ, check cho một nút logout, cái chỉ xuất hiện
khi một người dùng đã log vào. Cái này có thể được thực hiện như sau:

# Import the necessary exception class
from selenium.common.exceptions import NoSuchElementException

# Attempt to locate the logout button
try:

logout_button = driver.find_element_by_id(“logout”)
print(‘Successfully logged in’)

except NoSuchElementException:

print(‘Incorrect login/password’)

Nó là quan trọng để thực thi xử lí ngoại lệ để quản lí các kịch bản nơi các phần tử mong đợi bị mất, cái có thể
chỉ một login thất bại. Sử dụng NoSuchElementException, bạn có thể quyết định liệu nút logout – cái nên có mặt
sau một login thành công – không được tìm thấy:
Các tips thêm:
+ Sử dụng các chờ công khai: Thực hiện các chờ công khai để chờ cho các điều kiện nhất định hay phần tử được
load, cái là hữu dụng khi các phần tử có thể mất thời gian để xuất hiện sau login.
+ Xử lí an toàn credentials: Luôn làm an toàn xử lí login credentials. Tránh hardcode credentials trực tiếp
trong script. Sử dụng các biến môi trường hay các nơi an toàn để lưu giữ thông tin nhạy cảm.
Bằng cách đi theo các bước và xem xét này, bạn có thể tự động hóa có hiệu quả quá trình login trên các websites
với Selenium, đảm bảo các scripts tự động của bạn là mạnh mẽ và đáng tin cậy.

Chia sẻ