浅谈selenium如何应对网页内容需要鼠标滚动加载的问题

 更新时间:2020年03月14日 16:02:05   作者:wumxiaozhu  
这篇文章主要介绍了浅谈selenium如何应对网页内容需要鼠标滚动加载的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

相信大家在selenium爬取网页的时候都遇到过这样的问题:就是网页内容需要用鼠标滚动加载剩余内容,而不是一次全部加载出网页的全部内容,这个时候如果要模拟翻页的时候就必须加载出全部的内容,不然定位元素会找不到,出现报错。

这里提供两种方法供大家参考

一,通过selenium模拟浏览器,然后设置浏览器高度足够长,最后延时使之能够将页面的内容都能够加载出来

import time
from selenium import webdriver
driver = webdriver.Firefox()
driver.set_window_size(1000,30000)
driver.get(url)
time.sleep(5)

二,通过selenium模拟浏览器下拉操作

from selenium import webdriver
import time
browser.execute_script("window.scrollBy(0,3000)")
time.sleep(1)
browser.execute_script("window.scrollBy(0,5000)")
time.sleep(1)
browser.execute_script("window.scrollBy(0,8000)")
time.sleep(1)

补充知识:针对懒加载如何实现selenium 滑动至页面底部page_source一次性包含全部网页内容

有时网站使用了懒加载技术:只有在浏览器中纵向滚动条滚动到指定的位置时,页面的元素才会被动态加载。

注意,在加载之前,selenium的page_source是不会包含该页面的内容,page_source只包含加载出来的页面内容。

那么如何实现加载全部内容了,就需要模拟人滚动滚动条的行为,实现页面的加载

from selenium.webdriver.chrome.options import Options
from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
 
  def scroll_until_loaded(self):
    check_height = self.browser.execute_script("return document.body.scrollHeight;")
    while True:
      self.browser.execute_script("window.scrollTo(0, document.body.scrollHeight);")
      try:
        self.wait.until(lambda driver: self.browser.execute_script("return document.body.scrollHeight;") > check_height)
        check_height = self.browser.execute_script("return document.body.scrollHeight;")
      except TimeoutException:
        break

这里懒加载并不是一直有效, 当网速不好时,加载超过self.wait()时间, 页面还没加载出来时, 会认为全部加载完成, page_source里面的代码就会是以前加载出来的, 所以执行翻页操作后, 要执行time.sleep(3), 等待网页加载, 更新html再获取网页源代码

以上这篇浅谈selenium如何应对网页内容需要鼠标滚动加载的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python+NumPy绘制常见曲线的方法详解

    Python+NumPy绘制常见曲线的方法详解

    NumPy(Numerical Python)是Python的一种开源的数值计算扩展。本文将利用NumPy库绘制利萨茹曲线、计算斐波那契数列、方波和锯齿波和三角波,需要的可以参考一下
    2022-06-06
  • 如何优雅地处理Django中的favicon.ico图标详解

    如何优雅地处理Django中的favicon.ico图标详解

    默认情况下,浏览器访问一个网站的时候,同时还会向服务器请求"/favicon.ico"这个URL,目的是获取网站的图标,下面这篇文章主要给大家介绍了关于如何优雅地处理Django中favicon.ico图标的相关资料,需要的朋友可以参考下
    2018-07-07
  • Python3简单实例计算同花的概率代码

    Python3简单实例计算同花的概率代码

    这篇文章主要介绍了Python3简单实例计算同花的概率代码,具有一定参考价值,需要的朋友可以了解下。
    2017-12-12
  • python每天定时运行某程序代码

    python每天定时运行某程序代码

    这篇文章主要介绍了python每天定时运行某程序代码,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • Python使用XlsxWriter库操作Excel详解

    Python使用XlsxWriter库操作Excel详解

    XlsxWriter 是一个功能强大的 Python 模块,专门用于生成 Microsoft Excel 2007及以上版本的电子表格文件,本文主要为大家介绍了如何使用XlsxWriter库进行Excel基本操作,需要的可以参考下
    2023-11-11
  • Python股票开源库akshare的具体使用

    Python股票开源库akshare的具体使用

    AKShare是一个开源财经数据接口库,本文主要介绍了Python股票开源库akshare的具体使用,具有一定的参考价值,感兴趣的可以了解一下
    2024-04-04
  • python处理 yaml 时保持输入输出格式一致的问题记录

    python处理 yaml 时保持输入输出格式一致的问题记录

    这篇文章主要介绍了python处理 yaml 时保持输入输出格式一致的问题记录,要想保持顺序不变在dump时添加sort_keys=False,使yaml格式保持原来的排序,本文给大家介绍的非常详细,需要的朋友可以参考下
    2024-06-06
  • 如何利用python读取micaps文件详解

    如何利用python读取micaps文件详解

    这篇文章主要给大家介绍了关于如何利用python读取micaps文件的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • 一篇文章带你学习Python3的高级特性(2)

    一篇文章带你学习Python3的高级特性(2)

    这篇文章主要为大家详细介绍了Python3的高阶函数,主要介绍什么是高级特性,高级特性的用法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • 深入理解Python中的Contextlib库

    深入理解Python中的Contextlib库

    Python提供了一些内建的库以支持各种常见的编程任务,Contextlib库是其中之一,它提供了一些用于支持上下文管理协议(即with语句)的函数,这篇文章将详细介绍如何使用Contextlib库中的功能,需要的朋友可以参考下
    2023-06-06

最新评论