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

博主在第一个页面获取80条访问下一页的链接并循环打开时报错,原因是进入新页面后无法获取上一页面内容。解决办法是先打开第一层页面,在该页面获取所有链接并保存,再循环保存的列表来打开网址。

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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值