Xử lý trang có cuộn vô hạn (Infinite Scroll)
Cuộn vô hạn là một kỹ thuật phổ biến trên nhiều trang web hiện đại, trong đó nội dung mới được tải động khi người
dùng cuộn xuống cuối trang. Điều này có thể gây khó khăn khi bạn cần thu thập dữ liệu hoặc tương tác với nội dung
chỉ xuất hiện sau khi cuộn. Dưới đây là cách bạn có thể tự động cuộn qua một trang cuộn vô hạn bằng Selenium:
Tự động cuộn đến cuối trang cuộn vô hạn
Để xử lý cuộn vô hạn, bạn có thể kết hợp một vòng lặp với phương thức execute_script của Selenium để liên tục cuộn
xuống cho đến khi không còn nội dung mới được tải. Ví dụ thực tế như sau:
from selenium import webdriver
import timeDRIVER_PATH = ‘/path/to/chromedriver’
driver = webdriver.Chrome(executable_path=DRIVER_PATH)
driver.get(“https://example.com/infinite-scroll-page”)# Function to scroll to the bottom
def scroll_to_bottom(driver):old_position = driver.execute_script(“return window.pageYOffset;”)
while True:# Execute JavaScript to scroll down
driver.execute_script(“window.scrollTo(0, document.body.scrollHeight);”)
# Wait for the page to load
time.sleep(3) # This delay will depend on the connection speed and server response time
new_position = driver.execute_script(“return window.pageYOffset;”)
if new_position == old_position:
break # Exit the loop if the page hasn’t scrolled, meaning end of page
old_position = new_positionscroll_to_bottom(driver)
# Now you can perform any actions on the content loaded
# Example: extract data, take screenshots, etc.driver.quit()
Các điểm chính:
1. Khởi tạo WebDriver: Thiết lập Selenium để sử dụng trình duyệt Chrome và điều hướng đến trang web mục tiêu.
2. Định nghĩa hàm cuộn (Scroll Function): Hàm này sẽ liên tục cuộn xuống cuối trang cho đến khi không còn nội dung
mới được tải.
Phát hiện vị trí cuộn (Detect Scroll Position): Trước và sau mỗi lần cuộn, script sẽ kiểm tra vị trí dọc của trang
(scroll height).
Thoát vòng lặp (Break the Loop): Nếu vị trí trước và sau khi cuộn giống nhau, điều đó cho thấy bạn đã đến cuối trang
hoặc không còn nội dung mới được tải thêm.
3. Thực hiện các thao tác tiếp theo:
Sau khi quá trình cuộn hoàn tất, bạn có thể tiếp tục các công việc khác như trích xuất dữ liệu (data extraction).
Phương pháp này đảm bảo rằng tất cả nội dung được tải động (dynamically loaded content) đều hiển thị và có thể
tương tác trên trang — điều này rất quan trọng để thu thập dữ liệu toàn diện hoặc tương tác đầy đủ với website.
Bằng cách kết hợp hiệu quả khả năng của Selenium và việc thực thi JavaScript, bạn có thể vượt qua những thách thức
mà các thiết kế web hiện đại như cuộn vô hạn (infinite scrolling) mang lại.
