python中的selenium实现自动向下滚动页面并指定最大滑动距离
作者:呆萌的代Ma 发布时间:2021-09-04 20:44:03
标签:python,selenium,滚动页面,滑动距离
需要selenium控制的chrome向下滑动,自动加载一些内容,核心代码是:
browser.execute_script("window.scrollBy(0,300)")
这行可以向下滑动300个像素
需要的工具函数如下:
def roll_window_to_bottom(browser, stop_length=None, step_length=500):
? ? """selenium 滚动当前页面,向下滑
? ? :param browser: selenium的webdriver
? ? :param stop_length: 滑动的最大值
? ? :param step_length: 每次滑动的值
? ? """
? ? original_top = 0
? ? while True: ?# 循环向下滑动
? ? ? ? if stop_length:
? ? ? ? ? ? if stop_length - step_length < 0:
? ? ? ? ? ? ? ? browser.execute_script("window.scrollBy(0,{})".format(stop_length))
? ? ? ? ? ? ? ? break
? ? ? ? ? ? stop_length -= step_length
? ? ? ? browser.execute_script("window.scrollBy(0,{})".format(step_length))
? ? ? ? time.sleep(0.5 + random.random()) ?# 停顿一下
? ? ? ? check_height = browser.execute_script(
? ? ? ? ? ? "return document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;")
? ? ? ? if check_height == original_top: ?# 判断滑动后距顶部的距离与滑动前距顶部的距离
? ? ? ? ? ? break
? ? ? ? original_top = check_height
使用示例:
from selenium import webdriver
import time
import random
def roll_window_to_bottom(browser, stop_length=None, step_length=500):
? ? """selenium 滚动当前页面,向下滑
? ? :param browser: selenium的webdriver
? ? :param stop_length: 滑动的最大值
? ? :param step_length: 每次滑动的值
? ? """
? ? original_top = 0
? ? while True: ?# 循环向下滑动
? ? ? ? if stop_length:
? ? ? ? ? ? if stop_length - step_length < 0:
? ? ? ? ? ? ? ? browser.execute_script("window.scrollBy(0,{})".format(stop_length))
? ? ? ? ? ? ? ? break
? ? ? ? ? ? stop_length -= step_length
? ? ? ? browser.execute_script("window.scrollBy(0,{})".format(step_length))
? ? ? ? time.sleep(0.5 + random.random()) ?# 停顿一下
? ? ? ? check_height = browser.execute_script(
? ? ? ? ? ? "return document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;")
? ? ? ? if check_height == original_top: ?# 判断滑动后距顶部的距离与滑动前距顶部的距离
? ? ? ? ? ? break
? ? ? ? original_top = check_height
def main():
? ? option = webdriver.ChromeOptions()
? ? option.add_argument('lang=zh_CN.UTF-8') ?# 设置
? ? browser = webdriver.Chrome(chrome_options=option, desired_capabilities={"page_load_strategy": "none"})
? ? browser.get("http://news.baidu.com/")
? ? roll_window_to_bottom(browser, stop_length=700)
if __name__ == '__main__':
? ? main()
来源:https://blog.csdn.net/weixin_35757704/article/details/122763602
0
投稿
猜你喜欢
- 前言很多文章在谈及曲线平滑的时候,习惯使用拟合的概念,我认为这是不恰当的。平滑后的曲线,一定经过原始的数据点,而拟合曲线,则不一定要经过原始
- 在Soundbreak我们每天24小时不间断地播放实况音频和视频,所以对于MySQL的新增的复制特性,我们不能做出很令人信服的测试。通过测试
- 1.Django框架Django是一个开放源代码的Web应用框架,由Python写成。它采用 了MVC的框架模式,即模型(M)、视图(V)和
- 这是为了实现一个效果,而提前作的测试代码!看起来很简单的一个东西,到这会,大约四个小时过去了。不知道是IE6的BUG;还是我自已的BUG!有
- 网页过渡是指当浏览者进入或离开网页时,页面呈现的不同的刷新效果,比如卷动、百叶窗等。这样你的网页看起来
- NLTK 是使用 Python 教学以及实践计算语言学的极好工具。此外,计算语言学与人工 智能、语言/专门语言识别、翻译以及语法检查等领域关
- 在这个由两部分组成的系列文章的第二部分中,我们将继续探索如何将函数式编程方法中的好想法引入到 Python中,以实现两全其美。在上一篇文章中
- 前言前言:想写这个代码的原因是因为实习的时候需要根据表格名创建对应的文件夹,如果只是很少个数文件夹的话,ctrl+shift+n还可以接受吧
- Python处理json字符串中的非法双引号工作中数据清洗时遇到以下情况:a = '{"地区": "湖
- 如何使用Index Server建立一个网站导航地图?程序代码如下:<html><head><title>asp教程之网站导航 -
- 问题在使用matplotlib作图的时候,有的时候会遇到画图时坐标轴重叠,显示不全和图片保存时不完整的问题。如下:解决方案画图时重叠或者显示
- 本文实例讲述了PHP自定义函数用法。分享给大家供大家参考,具体如下:Demo1.php<?php //标准函数,内置函数
- 0、前言评判一个算法的好坏的标准:时间复杂度空间复杂度1、归并排序算法是什么?冒泡排序(Bubble Sort)是一种建立在归并操作上面的一
- 本文实例讲述了PHP实现的curl批量请求操作。分享给大家供大家参考,具体如下:<?php$ch = array();$res = a
- 本文实例为大家分享了tensorflow实现线性回归的具体代码,供大家参考,具体内容如下一、随机生成1000个点,分布在y=0.1x+0.3
- 本文实例为大家分享了Python实现学生信息管理系统的具体代码,供大家参考,具体内容如下要求描述:学生的信息包括:学号,姓名,年龄,性别,出
- django启动我们在启动一个django项目的时候,无论你是在命令行执行还是在pycharm直接点击运行,其实都是执行'runse
- 一、VSCode 创建Django 工程VSCode 官方: https://code.visualstudio.com1 mysite(项
- 笔者日积月累了许多精彩、实用的Web特效的制作,这些特效几乎都是比较常用的网页特效。现在我就把这些经过
- css里关于浏览器的兼容问题一直困惑着我们初级的css用户(高手可直接绕过),这里想根据我前段时间拜读的李超的书籍《css网站布局实录》里学