Sử dụng Selenium để scrape Web (phần 21)

Ví dụ 1- thông tin sách (tiếp tục)

Với dữ liệu yêu cầu được thu thập, driver.back() load trang liệt kê một lần nữa (nó cung cấp lịch sử ngay lập tức,
tương tự như nút back có sẵn trong cửa sổ trình duyệt) và lặp trên phần tử list <li> tiếp theo có sẵn. Selenium
WebDriver hỗ trợ các kiểm soát liên quan đến lịch sử trình duyệt với các phương thức back() và forward():

# Go back to history (From individual book detail page to
listings page)
driver.back()

Khi có nhiều trang trong hạng mục Childrens, code lặp qua cho các trang với một giá trị pagination (True) và tìm
kiếm cho link với text next. Xử lí ngoại lệ Python được sử dụng trong ví dụ này để thẩm định liệu phần tử có tồn
tại hay không với next text:
+ Nếu phần tử có tồn tại, đếm page được tăng lên 1 và trang liệt kê khác được load.
+ Nếu phần tử không tồn tại, nó được bắt với ngoại lệ NoSuchElementException, cái làm dừng hoạt động vòng lặp trang
bằng cách cập nhật giá trị Boolean pagination thành False:

try:

# Check for Pagination with text ‘next’ in the
Listing page
driver.find_element(By.LINK_TEXT,’next’).click()
page = page+1

except NoSuchElementException:

pagination = False
print(f “Further Pagination is not possible,
currently at {page}”)

Chú ý quan trọng
Cho thông tin nhiều hơn về xử lí ngoại lệ, hãy ghé thăm các links sau:
https://docs.python.org/3/tutorial/errors.html
https://seleniumpython.readthedocs.io/api.html
Trên hoàn thành của các loops cho các trang và liệt kê, dữ liệu cuối cùng được thu thập trong dataSet được cung cấp
các tên cột theo kế hoạch liệt kê trong một list [‘Upc’, ‘Title’, ‘Price’, ‘Rating’, ‘Stock’, ‘Stock_Qty’, ‘Url’,
‘Image’], và được sử dụng để tạo một CSV và JSON file.

Chia sẻ