浅谈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天气预报采集器实现代码(网页爬虫)
Oct 07 Python
Python中的descriptor描述器简明使用指南
Jun 02 Python
python实现单向链表详解
Feb 08 Python
下载python中Crypto库报错:ModuleNotFoundError: No module named ‘Crypto’的解决
Apr 23 Python
python自动登录12306并自动点击验证码完成登录的实现源代码
Apr 25 Python
对numpy中的数组条件筛选功能详解
Jul 02 Python
10分钟用python搭建一个超好用的CMDB系统
Jul 17 Python
解析PyCharm Python运行权限问题
Jan 08 Python
Python视频编辑库MoviePy的使用
Apr 01 Python
如何基于python把文字图片写入word文档
Jul 31 Python
flask开启多线程的具体方法
Aug 02 Python
python3实现Dijkstra算法最短路径的实现
May 12 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
yii中widget的用法
2014/12/03 PHP
php自定义hash函数实例
2015/05/05 PHP
Yii2框架制作RESTful风格的API快速入门教程
2016/11/08 PHP
php 基础函数
2017/02/10 PHP
one.php 多项目、函数库、类库 统一为一个版本的方法
2020/08/24 PHP
textarea的value是html文件源代码,存成html文件的代码
2007/04/20 Javascript
js压缩工具 yuicompressor 使用教程
2010/03/31 Javascript
asp.net中System.Timers.Timer的使用方法
2013/03/20 Javascript
jquery跨域请求示例分享(jquery发送ajax请求)
2014/03/25 Javascript
JavaScript面向对象编程入门教程
2014/04/16 Javascript
Bootstrap每天必学之导航
2015/11/26 Javascript
jQuery UI仿淘宝搜索下拉列表功能
2017/01/10 Javascript
Vue通过URL传参如何控制全局console.log的开关详解
2017/12/07 Javascript
vue组件name的作用小结
2018/05/23 Javascript
vue axios 简单封装以及思考
2018/10/09 Javascript
[40:17]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第一场
2018/04/06 DOTA
[45:10]NB vs Liquid Supermajor小组赛 A组胜者组决赛 BO3 第二场 6.2
2018/06/04 DOTA
python利用标准库如何获取本地IP示例详解
2017/11/01 Python
Python竟能画这么漂亮的花,帅呆了(代码分享)
2017/11/15 Python
微信跳一跳小游戏python脚本
2018/01/05 Python
使用python和Django完成博客数据库的迁移方法
2018/01/05 Python
Python tkinter事件高级用法实例
2018/01/31 Python
Python  unittest单元测试框架的使用
2018/09/08 Python
Django管理员账号和密码忘记的完美解决方法
2018/12/06 Python
Keras之fit_generator与train_on_batch用法
2020/06/17 Python
CSS3 Flex 弹性布局实例代码详解
2018/11/01 HTML / CSS
HTML5 Canvas绘制五星红旗
2016/05/04 HTML / CSS
优秀小学生家长评语
2014/01/30 职场文书
超市中秋节活动方案
2014/02/12 职场文书
充分就业社区汇报材料
2014/05/07 职场文书
音乐之声音乐广播稿
2014/09/10 职场文书
技术入股合作协议书
2014/10/07 职场文书
民政局办理协议离婚(范本)
2014/10/25 职场文书
2014年班组工作总结
2014/11/20 职场文书
2015大学自主招生自荐信范文
2015/03/04 职场文书
如何使JavaScript休眠或等待
2021/04/27 Javascript