Selenium-python——异常(selenium.common.exceptions.StaleElementReferenceException: Message: stale eleme)

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)

你可能感兴趣的:(Python爬虫)