selenium滚动加载数据解决方案

有些网站时一直滚动就会加载新数据的,在selenium中解决方法:

def loaddata_by_scroll(self, driver):
    js = 'return document.body.scrollHeight;'
    # 获取当前高度
    check_height = driver.execute_script(js)
    while True:
        # 先滚动到最底部,如果能继续加载更新,那么document.body.scrollHeight的值就会变大
        driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        try:
            # 判断当前的document.body.scrollHeight是否比原来的大
            # 这里巧妙利用WebDriverWait,until只要拿不到返回值然后超过给定的时间(5秒)后就会发生TimeoutException异常
            # 发生异常就是表示已经没有更多数据了,那么直接跳出死循环
            # x其实就是WebDriverWait参数的driver,until方法会传参给x。
            WebDriverWait(driver, 5, 0.2).until(lambda x: x.execute_script(js) > check_height)
            # 更新值,用于下次比较
            check_height = driver.execute_script(js)
        except Exception as e:
            break
posted @   运维爱背锅  阅读(264)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.