首页 > 其他分享 >selenium滚动加载数据解决方案

selenium滚动加载数据解决方案

时间:2023-07-17 11:47:17浏览次数:47  
标签:body script 解决方案 driver 加载 js document scrollHeight 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

标签:body,script,解决方案,driver,加载,js,document,scrollHeight,selenium
From: https://www.cnblogs.com/juelian/p/17559610.html

相关文章

  • Selenium查找元素、元素的属性和方法
    查找元素官方文档:https://www.selenium.dev/documentation/webdriver/elements/locators/一般通过find_element或者find_elements方法获取元素后的类型是WebElement或该类型的列表。语法:#查找第一个符合条件的WebElement元素并返回。driver.find_element(By类型,"查找的语......
  • “Win10笔记本开热点,手机连不上”的解决方案
    1、打开WLAN和热点开关;2、网络和Internet设置->网络和共享中心:可以看到2个活动网络,一个是”以太网“(可以连接网线上网),另外一个是热点(名字类似于”本地连接*2“不能上网)。3、进入”以太网“的属性->共享->Internet连接网络:勾选”允许其他网络用户通过此计算机的Internet连接来......
  • JVM专栏-类加载的时机
    类加载的时机类的生命周期类从被加载到虚拟机内存开始,到卸载出内存为止,它的整个生命周期包括以下7个阶段:加载验证准备解析初始化使用卸载验证、准备、解析3个阶段统称为连接。加载、验证、准备、初始化和卸载这5个阶段的顺序是确定的,类的加载过程必须按照这种......
  • Python报错 | 关于requests.exceptions.SSLError解决方案
    学习爬虫遇到的错误。报错信息:requests.exceptions.SSLError:HTTPSConnectionPool(host=’*****’,port=443):Maxretriesexceededwithurl:/(CausedbySSLError(“Can’tconnecttoHTTPSURLbecausetheSSLmoduleisnotavailable.”))解决方法:检查是否已安装......
  • react axios跨域解决方案
    跨域问题及其解决方案在Web开发过程中,由于同源策略的限制,浏览器会阻止发送跨域请求,这给前端开发带来了一定的挑战。而在使用React框架进行开发时,我们经常使用Axios库来进行数据通信,因此需要解决Axios跨域问题。本文将为您介绍React中使用Axios解决跨域问题的方案,并提供相应的代码......
  • v-if与v-for为什么不能连用?以及解决方案
    v-if与v-for不推荐在同一元素上使用在vue2中, v-for比v-if优先级高,每一次都需要遍历整个数组,造成不必要的计算,影响性能。即使100个list中只需要使用一个数据,也会循环整个数组解决方案场景1:每项都有自己的状态    例:v-for="userinusers"v-if="user.isActive"。将u......
  • PPT|智慧实验室物联网解决方案P33
    ......
  • 为什么unity里的异步加载要配合协程使用
      在Unity中,异步加载资源时需要配合协程使用的原因是为了避免阻塞主线程。在游戏开发中,资源加载通常是一个耗时的操作,如果在主线程中进行同步加载,会导致游戏卡顿或者无响应,影响用户体验。使用协程可以将资源加载操作放在后台线程中进行,然后在加载完成后再将结果返回到主线程......
  • jquery怎么实现点查询时页面淡化并转圈提示正在加载
    jQuery实现点查询时页面淡化并转圈提示正在加载在现代的网页应用中,用户体验是至关重要的一部分。当用户进行查询操作时,如果页面没有及时给出反馈,用户可能会感到焦虑和不耐烦。因此,在进行查询时,我们可以使用jQuery来实现页面的淡化效果,并显示一个加载提示,以提升用户体验。实际问题......
  • JVM内存模型和类加载
    内存模型JVM内存模型主要分为堆、程序计数器、方法区、虚拟机栈和本地方法栈。堆堆中包含了字符串常量池。程序计数器记录线程执行的字节码的地址。方法区存放已被虚拟机加载的类相关信息,包括类信息、运行时常量池(存放编译生成的字面量和符号引用)。当类加载到内存后,JVM把......