浅谈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正则表达式使用经典实例
Jun 21 Python
python 调用win32pai 操作cmd的方法
May 28 Python
Python文本处理之按行处理大文件的方法
Apr 09 Python
Python实现获取本地及远程图片大小的方法示例
Jul 21 Python
python绘制热力图heatmap
Mar 23 Python
python实现LRU热点缓存及原理
Oct 29 Python
基于Python爬取爱奇艺资源过程解析
Mar 02 Python
解决django xadmin主题不显示和只显示bootstrap2的问题
Mar 30 Python
matplotlib 生成的图像中无法显示中文字符的解决方法
Jun 10 Python
python的json包位置及用法总结
Jun 21 Python
python中取绝对值简单方法总结
Jul 24 Python
Django实现微信小程序支付的示例代码
Sep 03 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
CodeIgniter框架过滤HTML危险代码
2014/06/12 PHP
php中magic_quotes_gpc对unserialize的影响分析
2014/12/16 PHP
js+php实现静态页面实时调用用户登陆状态的方法
2015/01/04 PHP
php通过修改header强制图片下载的方法
2015/03/24 PHP
Eclipse PHPEclipse 配置的具体步骤
2017/08/08 PHP
动态加载js的几种方法
2006/10/23 Javascript
Dojo 学习笔记入门篇 First Dojo Example
2009/11/15 Javascript
jquery 中多条件选择器,相对选择器,层次选择器的区别
2012/07/03 Javascript
JavaScript 中的日期和时间及表示标准介绍
2013/08/21 Javascript
封装好的一个万能检测表单的方法
2015/01/21 Javascript
JavaScript将XML转成JSON的方法
2015/03/12 Javascript
jQuery的基本概念与高级编程
2015/05/14 Javascript
jquery仿百度百科底部浮动导航特效
2015/08/08 Javascript
vue-cli与webpack处理静态资源的方法及webpack打包的坑
2018/05/15 Javascript
微信小程序实现多选框全选与取消全选功能示例
2019/05/14 Javascript
深入浅出vue图片路径的实现
2019/09/04 Javascript
JS实现表单中点击小眼睛显示隐藏密码框中的密码
2020/04/13 Javascript
Jquery如何使用animation动画效果改变背景色的代码
2020/07/20 jQuery
JavaScript 绘制饼图的示例
2021/02/19 Javascript
python3简单实现微信爬虫
2015/04/09 Python
使用Python编写基于DHT协议的BT资源爬虫
2016/03/19 Python
Python使用matplotlib简单绘图示例
2018/02/01 Python
pyqt5 使用label控件实时显示时间的实例
2019/06/14 Python
python单线程下实现多个socket并发过程详解
2019/07/27 Python
在PyCharm中实现添加快捷模块
2020/02/12 Python
详解如何在css3打包后自动追加前缀插件:autoprefixer
2018/12/18 HTML / CSS
你不知道的5个HTML5新功能
2016/06/28 HTML / CSS
HTML5实现的震撼3D焦点图动画的示例代码
2019/09/26 HTML / CSS
努比亚手机官网:nubia
2016/10/06 全球购物
Python面试题:Python里面如何生成随机数
2015/03/12 面试题
如何打造一封优秀的留学推荐信
2014/01/25 职场文书
珍珠鸟教学反思
2014/02/01 职场文书
建筑工程质量通病防治方案
2014/06/08 职场文书
2015年小学图书室工作总结
2015/05/18 职场文书
nginx实现发布静态资源的方法
2021/03/31 Servers
mybatis源码解读之executor包语句处理功能
2022/02/15 Java/Android