python+selenium截图方法

1.截图网页全部

截全屏的,用到的内置方法为save_screenshot(“test.png”)

from selenium import webdriver
from time import sleepclass test:driver = webdriver.Chrome()driver.maximize_window()driver.get('https://www.baidu.com/')sleep(2)# 截取全屏driver.save_screenshot("demo1.png")```python
在这里插入代码片

2.截取页面上固定元素的图片

截取百度首页“百度一下”的按钮为例

from selenium import webdriver
from time import sleepclass test:# 打开谷歌浏览器driver = webdriver.Chrome()# 网页全屏显示driver.maximize_window()# 访问百度首页driver.get('https://www.baidu.com/')# 强制等待2秒sleep(2)# 使用ID定位的方法获取"百度一下"的元素element = driver.find_element_by_id("su")# 截图element.screenshot("element.png")# 关闭浏览器driver.quit()

3.截取指定位置的图片

from selenium import webdriver
from time import sleep
from PIL import Imageclass test:driver = webdriver.Chrome()driver.maximize_window()driver.get('https://www.baidu.com/')sleep(2)driver.save_screenshot("baidu1.png")element = driver.find_element_by_id("kw")print("获取元素的坐标")location = element.locationprint(location)print(element.size)# 计算元素上、下、左、右的位置top = element.location['y']bottom = element.location['y'] + element.size['height']left = element.location['x']right = element.location['x'] + element.size['width']print(top, bottom, left, right)im = Image.open('baidu1.png')im = im.crop((left, top, right,bottom))im.show()im.save("baidu2.png")

4.图片拼接

from selenium import webdriver
from PIL import Imagedriver = webdriver.Chrome()
# 设置浏览器窗口最大化
driver.maximize_window()  # 设置打开页面最大化,目的是更好的截取错误图
# 打开税网
driver.get("https://www.csdn.net/")
# 1. 截取当前页面
driver.save_screenshot('result.png')def join_images(png1, png2, size=0, output='result.png'):"""图片拼接:param png1: 图片1:param png2: 图片2:param size: 两个图片重叠的距离:param output: 输出的图片文件:return:"""# 图片拼接img1, img2 = Image.open(png1), Image.open(png2)size1, size2 = img1.size, img2.size  # 获取两张图片的大小joint = Image.new('RGB', (size1[0], size1[1]+size2[1]-size))    # 创建一个空白图片# 设置两张图片要放置的初始位置loc1, loc2 = (0, 0), (0, size1[1] - size)# 分别放置图片joint.paste(img1, loc1)joint.paste(img2, loc2)# 保存结果joint.save(output)JS = {'滚动到页尾': "window.scroll({top:document.body.clientHeight,left:0,behavior:'auto'});",'滚动到': "window.scroll({top:%d,left:0,behavior:'auto'});",
}
# 获取body大小
body_h = int(driver.find_element_by_xpath('//body').size.get('height'))
# 计算当前页面截图的高度
# (使用driver.get_window_size()也可以获取高度,但有误差,推荐使用图片高度计算)
current_h = Image.open('result.png').size[1]
image_list = ['result.png']  # 储存截取到的图片路径for i in range(1, int(body_h/current_h)):# 1. 滚动到指定锚点driver.execute_script(JS['滚动到'] % (current_h * i))# 2. 截图driver.save_screenshot(f'test_{i}.png')join_images('result.png', f'test_{i}.png')
# 处理最后一张图
driver.execute_script(JS['滚动到页尾'])
driver.save_screenshot('test_end.png')
# 拼接图片
join_images('result.png', 'test_end.png', size=current_h-int(body_h % current_h))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/218714.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构:双链表

由于双链表中大部分操作其实和单链表操作类似,所以这里只挑关键的一些函数 1、定义与初始化 typedef struct DNode {ElementType data;struct DNode *prior,*next; }DNode,*DLinkList;bool InitialDLinkList(DLinkList &L){L (DNode *)malloc(sizeof(DNode));…

不与最大数相同的数字之和

题目描述 输出一个整数数列中不与最大数相同的数字之和。 输入格式 输入分为两行: 第一行为 (N 为接下来数的个数,N≤100); 第二行为 N 个整数,数与数之间以一个空格分开,每个整数的范围是 −1000,000 到 1000,00…

高精度电压源的作用是什么

高精度电压源是一种用于提供稳定和精确电压输出的电子设备。它们在实验室研究、工业生产和医疗器械等各种应用中发挥着重要作用。下面西安安泰来为大家详细介绍高精度电压源的作用和用途等内容。 一、高精度电压源的作用 提供准确的电压值:高精度电压源可以提供非常…

直流电、交流电、电磁波、光之间的联系

直流电、恒定磁场、交流电、交变磁场、电磁波、光之间的联系 频率为0Hz的直流电及恒定磁场 从频率的角度上看,直流电与恒定磁场的方向不变,频率为0Hz. 如可充电锂离子电池的电压3.7V, 干电池的电压1.5V. 磁铁的磁场方向从N极到S极,始终保持…

Failed to connect to huggingface.co

在国内huggingface.co被墙了。可以使用Huggingface 镜像站https://hf-mirror.com/来解决这个问题。 解决方法: # vim ~/.bashrc export HF_ENDPOINThttps://hf-mirror.com然后再source ~/.bashrc 当访问 huggingface.co 时,将会直接替换为本站域名hf-m…

[Django-05 ]自定义sql查询

自定义sql查询 settings.py 设置数据库自定义sql查询 settings.py 设置数据库 DATABASES {# default: {# ENGINE: django.db.backends.sqlite3,# NAME: BASE_DIR / db.sqlite3,# }default: {ENGINE: django.db.backends.mysql, # 数据库引擎NAME: study, # 数据库名…

mac切换node版本

Mac 上切换 node 版本总结 背景 在做项目的时候,往往会遇到老项目没有升级的问题,node环境版本比较低,自己电脑安装或者新项目安装了最新版本的 node 环境,那么既要支持老版本的使用也要支持新版本那么怎么办呢? Mac 提…

AnimateAnything:Fine-grained open domain image animation with motion guidance

1.Introduction 本文旨在借助视频扩散模型的motion prior来解决开放领域图像动画问题,提出了一种可控扩散图像动画方法,能够在保留细节的同时对图像中的任意对象进行动画处理。为了增强用户对动画过程的控制能力,引入了motion area guidance和…

vue3 添加编辑页使用 cron 表达式生成

示例效果图 1、添加组件 <template><div class"v3c"><ul class"v3c-tab"><li class"v3c-tab-item" :class"{ v3c-active: tabActive 1 }" click"onHandleTab(1)">秒</li><li class&qu…

小航助学2023年9月电子学会Scratch三级真题(含题库答题软件账号)

需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统&#xff08;含题库答题软件账号&#xff09; 单选题2.00分 删除编辑附件图文 答案:C 第1题运行下面程序后&#xff0c;角色的x坐标值是&#xff1f;&#xff08; &#xff09; A、100B、90C、110D、120 答…

【前端学习记录】记一次分片上传逻辑的调试过程

前言 在项目开发的过程中&#xff0c;经常会遇到上传和下载&#xff0c;对于上传来说&#xff0c;如果是小文件的话&#xff0c;接口响应会比较快&#xff0c;但是对于大文件&#xff0c;则需要对其分片以减少请求体的大小和上传时间。 小文件上传 以Vue框架使用<el-uplo…

官宣 鸿雁成为2023汇丰世界羽联世界巡回赛总决赛官方供应商

全屋智能和羽毛球运动能擦出怎样的火花&#xff1f; 鸿雁给你答案&#xff01; 12月13日&#xff0c;2023汇丰世界羽联世界巡回赛总决赛将在杭州举行。 鸿雁签约成为2023汇丰世界羽联世界巡回赛总决赛官方供应商&#xff0c;将携手世界羽联&#xff0c;为广大羽毛球爱好者们…

Yolov5双目测距-双目相机计数及测距教程(附代码)

引言 在计算机视觉领域&#xff0c;Yolov5-Binocular相机距离计数及测距是一个引人注目的研究方向。本教程将为小白用户提供一个简明扼要的学习指南&#xff0c;涵盖了关键步骤&#xff0c;包括标定、公示推倒以及重要的代码片段。 第一步&#xff1a;环境搭建 首先&#x…

【Geoserver】将geoserver迁移到jetty的发行包中

之前讲了在Geosever的二进制发行包中升级jetty的内容&#xff0c;我测试之后发现有些问题&#xff0c;本地运行可能没有问题&#xff0c;但是在linux上运行报错了。 于是我想着换个思路好了&#xff0c;总是想着将Geosever中的jetty包替换掉&#xff0c;干脆反过来&#xff0c;…

2023_Spark_实验二十六:编写Shell模拟生成点击实时数据

引言&#xff1a;流式数据处理主要处理实时数据&#xff0c;由于实验教学过程中&#xff0c;每个同学无法拿到实时数据&#xff0c;因此我们开发shell脚本模拟实时数据生成&#xff0c;支持后续实验。 实验目的&#xff1a;通过开发模拟实时点击流shell脚本&#xff0c;模拟实时…

【Database】什么是数据库?常见的数据库类型有哪些?

什么是数据库&#xff1f;常见的数据库类型有哪些&#xff1f; 首先&#xff0c;什么是数据库&#xff1f;把它想象成一个数字游乐场&#xff0c;我们以结构化的方式组织和存储大量信息。现在&#xff0c;让我们来谈谈数据库的主要类型。 关系型数据库&#xff1a; 想象一下…

深度学习的目标检测算法综述

信息记录材料 2022年10月 第23卷第10期 【摘要】目标检测是深度学习的一个重要应用&#xff0c;目前在智能驾驶、工业检测相关领域都获得应用&#xff0c;具有重要的现实意义。本文对基于深度学习目标检测算法原理和应用情况进行简述&#xff0c;首先介绍结合区域提取和卷积神经…

Spring上IOC之@EnableAspectJAutoProxy

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…

3分钟,掌握“曲面屏显示屏”

在3分钟内掌握“曲面屏显示屏”的概念和特点&#xff0c;可以按照以下步骤进行&#xff1a; 一、了解曲面屏显示屏的基本概念 曲面屏显示屏是一种采用柔性塑料的显示屏&#xff0c;主要通过OLED面板来实现。相比直面屏幕&#xff0c;曲面屏幕弹性更好&#xff0c;不易破碎。此外…

gamit安装

1 联想G510&#xff0c;按F2进去BIOS&#xff0c;选到configure,调节virtual &#xff0c;enable&#xff0c;F10保存&#xff0c;退出 2安装虚拟机vmare,装linus 3Ubuntn升级服务器更改&#xff0c;ustc.edu 4重新启动虚拟机 5前导软件 apt-get install csh apt-get inst…