我有这样的代码,我在其中抓取网店主页的产品链接,然后尝试循环浏览所有链接,从每个产品中抓取信息。
这段代码在第一个循环中运行得很好(它打开第一个产品页面,然后返回主页(,但在第二个循环中,我收到错误消息";陈旧的元素引用:元素未附加到页面文档中;。
from selenium.webdriver.support import expected_conditions as EC
wait_variable = WebDriverWait(driver, 15)
product_links = driver.find_elements(By.XPATH, './/a[@class="product-item-link"]')
for link in product_links:
wait_variable.until(EC.element_to_be_clickable(link)).click()
#Scrape info from product
driver.back()
StaleElementReferenceException
发生在您尝试使用以前找到的元素时,该元素已不在您所在的网页上。如果您离开该页面,即使稍后返回到同一个页面,也会发生这种情况。您需要重新找到元素才能使用它,并且必须重新思考如何使用现有的循环,这是行不通的。也许可以抓取链接,然后在一个新的选项卡中打开它,这样你就不需要在循环过程中离开起始页。