Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Saya Mendapat StaleElementException Semasa Mengikis Web Berulang di Amazon?

Mengapa Saya Mendapat StaleElementException Semasa Mengikis Web Berulang di Amazon?

Barbara Streisand
Barbara Streisandasal
2024-11-16 11:33:03159semak imbas

Why Am I Getting StaleElementException During Iterative Web Scraping on Amazon?

StaleElementException Semasa Mengikis Web Berulang dengan Python

Apabila mengikis hasil carian Amazon, ralat StaleElementException dan ValueError timbul semasa penomboran pada halaman berikutnya. Memeriksa isu mencadangkan bahawa elemen halaman yang bertanggungjawab untuk navigasi menjadi lapuk atau tidak tersedia selepas halaman awal dimuatkan.

Memeriksa kod yang diberikan, nampaknya isu itu mungkin berkaitan dengan penantian tersirat. Walaupun kod menunjukkan menunggu 10 saat, ini tidak menjamin jeda 10 saat penuh. Sebaliknya, ia membenarkan masa menunggu maksimum selama 10 saat, tetapi penantian akan berakhir apabila mencari elemen sasaran.

Untuk mengurangkan isu ini, pendekatan yang lebih jelas disyorkan untuk memastikan kestabilan halaman sebelum melaksanakan tindakan seterusnya. Berikut ialah penyelesaian alternatif:

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

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

Penyelesaian ini menggunakan penantian yang jelas untuk memastikan butang halaman seterusnya boleh diklik sebelum cuba menavigasi. Penantian akan berterusan selama maksimum 10 saat, atau sehingga butang ditemui dan sedia untuk interaksi. Pendekatan ini menghapuskan isu unsur lapuk dan memastikan automasi yang boleh dipercayai.

Atas ialah kandungan terperinci Mengapa Saya Mendapat StaleElementException Semasa Mengikis Web Berulang di 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