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 @ 2023-07-17 11:30  蕝戀  阅读(227)  评论(0编辑  收藏  举报