Selenium-python——異常(selenium.common.exceptions.StaleElementReferenceException: Message: stale eleme)
阿新 • • 發佈:2018-12-12
1、我在第一個頁面獲取到了訪問下一頁的連結一共80條,然後迴圈獲取八十條連結,並迴圈開啟。報了這個錯誤。程式碼如下
from selenium import webdriver
import time
import random
driver = webdriver.Chrome()
driver.get("http://www.*******.com")
timesleep = random.randint(2,5)
time.sleep(timesleep)
href = driver.find_elements_by_xpath("//a[@class='titlink']")
print(len(href))
for index,i in enumerate(href):
hre = i.get_attribute("href")
print(hre)
print("@"*30)
# # 建立一個新視窗
driver.execute_script('window.open()')
driver.switch_to_window(driver.window_handles[1])
driver.get(hre)
time.sleep(timesleep)
print('123')
# driver.close()
之後這樣就報錯了
問題出在我進入了一個新的頁面,無法獲取上一頁面的內容
2、解決方法:可以開啟第一層頁面,然後在第一層獲取所有的連結。並儲存(可以儲存為列表,或檔案等),然後迴圈該列表,獲取網址並進行開啟。
from selenium import webdriver
import time
import random
driver = webdriver.Chrome()
driver.get("http://www1.xcar.com.cn/bbs/forumdisplay.php?fid=160&page=1")
timesleep = random.randint(2,5 )
time.sleep(timesleep)
href = driver.find_elements_by_xpath("//a[@class='titlink']")
print(len(href))
list1 = []
for index,i in enumerate(href):
hre = i.get_attribute("href")
print(hre)
list1.append(hre)
for j in list1:
driver.get(j)