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


Posted in Python onMarch 14, 2020

相信大家在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 相关文章推荐
跟老齐学Python之玩转字符串(1)
Sep 14 Python
Python基于checksum计算文件是否相同的方法
Jul 09 Python
常用python编程模板汇总
Feb 12 Python
Python协程的用法和例子详解
Sep 09 Python
Python实现识别手写数字 Python图片读入与处理
Mar 23 Python
Python运维之获取系统CPU信息的实现方法
Jun 11 Python
使用 Visual Studio Code(VSCode)搭建简单的Python+Django开发环境的方法步骤
Dec 17 Python
详解Python对JSON中的特殊类型进行Encoder
Jul 15 Python
Python中字典与恒等运算符的用法分析
Aug 22 Python
python爬虫之遍历单个域名
Nov 20 Python
python 装饰器功能与用法案例详解
Mar 06 Python
python 解决微分方程的操作(数值解法)
May 26 Python
Python实现鼠标自动在屏幕上随机移动功能
Mar 14 #Python
Python 读取WAV音频文件 画频谱的实例
Mar 14 #Python
Python2.7:使用Pyhook模块监听鼠标键盘事件-获取坐标实例
Mar 14 #Python
python matplotlib包图像配色方案分享
Mar 14 #Python
python 使用cx-freeze打包程序的实现
Mar 14 #Python
python matplotlib imshow热图坐标替换/映射实例
Mar 14 #Python
python pyqtgraph 保存图片到本地的实例
Mar 14 #Python
You might like
浅谈PHP强制类型转换,慎用!
2013/06/06 PHP
PHP GD库相关图像生成和处理函数小结
2016/09/30 PHP
thinkPHP自定义类实现方法详解
2016/11/30 PHP
ThinkPHP 3使用OSS的方法
2018/07/19 PHP
JavaScript 基于原型的对象(创建、调用)
2009/10/16 Javascript
基于jquery的回到页面顶部按钮
2011/06/27 Javascript
js精度溢出解决方案
2012/12/02 Javascript
jquery获取特定name所有选中的checkbox,支持IE9标准模式
2013/03/18 Javascript
alert中断settimeout计时功能
2013/07/26 Javascript
JS 获取select(多选下拉)中所选值的示例代码
2013/08/02 Javascript
JavaScript如何获取数组最大值和最小值
2015/11/18 Javascript
实例讲解DataTables固定表格宽度(设置横向滚动条)
2017/07/11 Javascript
JavaScript实现各种排序的代码详解
2017/08/28 Javascript
JQuery扩展对象方法操作示例
2018/08/21 jQuery
js限制input只能输入有效的数字(第一个不能是小数点)
2018/09/28 Javascript
vue-awesome-swiper 基于vue实现h5滑动翻页效果【推荐】
2018/11/08 Javascript
node.js中express模块创建服务器和http模块客户端发请求
2019/03/06 Javascript
简单了解JS打开url的方法
2020/02/21 Javascript
vuex分模块后,实现获取state的值
2020/07/26 Javascript
vue自定义指令和动态路由实现权限控制
2020/08/28 Javascript
原生js实现无缝轮播图效果
2021/01/28 Javascript
python列表去重的二种方法
2014/02/14 Python
Python正则抓取新闻标题和链接的方法示例
2017/04/24 Python
教你用 Python 实现微信跳一跳(Mac+iOS版)
2018/01/04 Python
Python基于递归算法实现的汉诺塔与Fibonacci数列示例
2018/04/18 Python
python基于C/S模式实现聊天室功能
2019/01/09 Python
Python 获取windows桌面路径的5种方法小结
2019/07/15 Python
Python实现一个简单的递归下降分析器
2020/08/01 Python
牵手50台湾:专为黄金岁月的单身人士而设的交友网站
2021/02/18 全球购物
C#面试问题
2016/07/29 面试题
听课评语大全
2014/04/30 职场文书
公开承诺书格式
2014/05/21 职场文书
学校班班通实施方案
2014/06/11 职场文书
合伙经营协议书范本
2014/09/13 职场文书
小学教师节活动总结
2015/03/20 职场文书
2019如何书写演讲稿?
2019/07/01 职场文书