浅谈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从ftp下载数据保存实例
Nov 20 Python
Python之eval()函数危险性浅析
Jul 03 Python
Python数据库的连接实现方法与注意事项
Feb 27 Python
python批量制作雷达图的实现方法
Jul 26 Python
利用matplotlib+numpy绘制多种绘图的方法实例
May 03 Python
Python MySQL数据库连接池组件pymysqlpool详解
Jul 07 Python
Python OpenCV对本地视频文件进行分帧保存的实例
Jan 08 Python
一行Python代码过滤标点符号等特殊字符
Aug 12 Python
Pytorch之parameters的使用
Dec 31 Python
使用Jupyter notebooks上传文件夹或大量数据到服务器
Apr 14 Python
快速解决pymongo操作mongodb的时区问题
Dec 05 Python
Python爬虫爬取微博热搜保存为 Markdown 文件的源码
Feb 22 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中使用cookie来保存用户登录信息的实现代码
2012/03/08 PHP
PHP5常用函数列表(分享)
2013/06/07 PHP
php实现图片以base64显示的方法
2016/10/13 PHP
PHP实现的同步推荐操作API接口案例分析
2016/11/30 PHP
Dojo 学习笔记入门篇 First Dojo Example
2009/11/15 Javascript
javascript 鼠标悬浮图片显示原图 移出鼠标后原图消失(多图)
2009/12/28 Javascript
jQuery的deferred对象使用详解
2011/08/20 Javascript
javascript中如何处理引号编码"
2013/08/15 Javascript
JavaScript运行时库属性一览表
2014/03/14 Javascript
jQuery中after()方法用法实例
2014/12/25 Javascript
jQuery实现动态表单验证时文本框抖动效果完整实例
2015/08/21 Javascript
javascript动态添加checkbox复选框的方法
2015/12/23 Javascript
搭建Bootstrap离线文档的方法
2016/12/02 Javascript
微信小程序实现简单跑马灯效果
2020/05/26 Javascript
详解ES6新增字符串扩张方法includes()、startsWith()、endsWith()
2020/05/12 Javascript
js实现飞机大战游戏
2020/08/26 Javascript
详细讲解用Python发送SMTP邮件的教程
2015/04/29 Python
python处理html转义字符的方法详解
2016/07/01 Python
浅谈Python类里的__init__方法函数,Python类的构造函数
2016/12/10 Python
python 连接各类主流数据库的实例代码
2018/01/30 Python
Python设计模式之备忘录模式原理与用法详解
2019/01/15 Python
python钉钉机器人运维脚本监控实例
2019/02/20 Python
GitHub 热门:Python 算法大全,Star 超过 2 万
2019/04/29 Python
opencv3/C++实现视频读取、视频写入
2019/12/11 Python
Pycharm pyuic5实现将ui文件转为py文件,让UI界面成功显示
2020/04/08 Python
html5组织文档结构_动力节点Java学院整理
2017/07/11 HTML / CSS
html5弹跳球示例代码
2013/07/23 HTML / CSS
HTML5新特性之type=file文件上传功能
2018/02/02 HTML / CSS
开办化妆品公司创业计划书
2013/12/26 职场文书
矫正人员思想汇报
2014/01/08 职场文书
母校寄语大全
2014/04/10 职场文书
大学生党员承诺书
2014/05/20 职场文书
公司年终奖分配方案
2014/06/16 职场文书
教师节横幅标语
2014/10/08 职场文书
同事离别感言
2015/08/04 职场文书
五年级语文教学反思
2016/03/03 职场文书