Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengelakkan StaleElementException Apabila Mengikis Hasil Carian Amazon?

Bagaimana untuk Mengelakkan StaleElementException Apabila Mengikis Hasil Carian Amazon?

Barbara Streisand
Barbara Streisandasal
2024-11-22 00:56:14969semak imbas

How to Avoid StaleElementException When Scraping Amazon Search Results?

StaleElementException dalam Lelaran Selenium

Apabila cuba melelar melalui hasil carian di Amazon menggunakan Selenium, pengguna mungkin menghadapi StaleElementException apabila berulang kali menatal ke bawah ke memuatkan halaman baharu. Ralat ini berlaku kerana elemen yang digunakan untuk menatal, bottom_bar, menjadi tidak sah selepas halaman dimuat semula.

Untuk menyelesaikan isu ini dan mendayakan penomboran yang lebih dipercayai, adalah disyorkan untuk menggunakan pendekatan yang lebih mudah yang menghapuskan penatalan halaman yang eksplisit. Sebaliknya, Selenium boleh terus mengklik butang "Seterusnya" sehingga ia menjadi dilumpuhkan. Ini memudahkan kod dan memastikan pemandu boleh menavigasi hasil carian secara konsisten.

Kod yang dikemas kini di bawah melaksanakan pendekatan ini:

from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait as wait
from selenium.common.exceptions import TimeoutException

driver = webdriver.Chrome()

driver.get('https://www.amazon.com/s/ref=nb_sb_noss_1?url=search-alias%3Daps&field-keywords=sonicare+toothbrush')

while True:
    try:
        wait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'a > span#pagnNextString'))).click()
    except TimeoutException:
        break

Perhatikan bahawa implicitly_wait(10) tidak menunggu untuk penuh 10 saat tetapi sebaliknya "menunggu sehingga 10 saat untuk elemen muncul dalam DOM HTML." Oleh itu, jika elemen ditemui dalam tempoh yang lebih singkat (cth., 1 atau 2 saat), proses menunggu selesai.

Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan StaleElementException Apabila Mengikis Hasil Carian Amazon?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn