selenium迭代获取数据信息,页面未附着的解决方案

问题:

selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document   (Session info: chrome=99.0.4844.74)

产生原因:

最近在学习爬虫,其中在学习selenium时出现了这个问题,网上也出现了一些对于这种问题的解决方案。

第一种:

wait = WebDriverWait(browser, 10)
wait.until(EC.presence_of_all_elements_located((By.CLASS_NAME, 'ListFooter')))

这种方法是不可行的,网站很多情况并不是没有到达页面尾部

第二种:

在我们请求到页面后进行等待,这种方法是可行的。下面就通过某网站进行举例说明:

        self.driver.get(self.url)
        time.sleep(10)
        room_list = self.driver.find_elements_by_xpath('//*[@id="listAll"]/section[2]/div[2]/ul/li/div')

 为什么要等待几秒后,才继续进行数据采集呢,因为现在的网站与原来大有不同,比如下面的从某直播平台取得的包,我们可以发现除了有document类型的all响应包外,还有一个同名的sw.js:1,这个响应是用来实时刷新的,即对页面进行一次实时内容刷新,这对于直播这种实时平台来说,即为的关键,但对于我们有什么影响呢?

当我们不进行暂停时,那么我们得到的页面是没有通过json请求填充数据的设为sw:js:1界面,或者是过时的被刷新前的页面,此时对与web_driver来说,就有可能出现元素未附着的情况。

包括网csdn有网友是这样说的:每次对其页面进行操作以后,使用selenium对其下一次循环进行操作的时候抛出了异常:

selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element

意思就是说:陈旧元素引用异常
原因是,因为表格中对其进行的点击操作,导致页面有重新加载。

归根结底就是网页进行了更新操作,感兴趣的朋友可以自己去一些实时刷新的网站就行尝试尝试。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值