python+selenium实现网页全屏截图

前言

实现方法采用 Pillow+Selenium,基本原理为:截取多张不同位置的页面,拼接成一个图片

已知情报:Chrome()只能截取当前屏幕展示出的网页,本篇文章是针对webdriver.Chrome()的全屏幕截取解决方法

开始写代码之前我们必须要明确我们的最终目的,即截取到整个网页。根据这个需求,分解出多个问题点:

  1. 如何网页截屏?
  2. 什么样的网页有完整截取的需求?
  3. 如何截取到全部的网页?
  4. 如何拼接截取到的部分网页截图?

带着上面的问题让我们开始吧!

开始

目标网站:https://www.csdn.net/

首先要知道怎么在网页中截图

from selenium import webdriverdriver = webdriver.Chrome()
# 设置浏览器窗口最大化
driver.maximize_window()  # 设置打开页面最大化,目的是更好的截取错误图
# 打开税网
driver.get("https://www.csdn.net/")
# 1. 截取当前页面
driver.save_screenshot('result.png')

上面执行的是截取当前展示出来的页面,但并不是我们要的完整页面,所以要截取多张图

from PIL import ImageJS = {'滚动到页尾': "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))

拼接图片的join_images方法,参考自Ivy丶大神的博文python图片拼接

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)

运行效果:

相关资料:

python图片拼接

python+selenium实现网页全屏截图相关推荐

  1. Python+Selenium动态网页的信息爬取

    录 一.Selenium 1.1 简介 1.2 配置 二.对百度进行自动化测试 2.1 进入百度搜索界面 2.2 自动填充百度网页的查询关键字并完成自动搜索 三.爬取指定网页的名言 3.1 找到元素 ...

  2. [python]利用Selenium实现网页全屏截图+部分截图并web实现

    好久都没有写文章了,今天记录一下. 实现目标 我的目标是输入一段网址,能够得到该网页的一部分截图. 思路: 根据网址打开网页 先全屏截图,再保存成图片 之后对这张图片进行部分截图 代码 我不需要滚动截 ...

  3. python selenium 获取网页源代码

    获取网页源代码: 引入组件:[from selenium import webdriver]. [from selenium.webdriver.chrome.options import Optio ...

  4. Python selenium操作浏览器全屏截图

    最近完成一个需求,需要对监控页面全屏截图,并存储成图片上传到oss. 先简短记录下最终的解决方式,后续有空完善细节及代码注释. 网上找了很多资料,全屏截图的确可以,但是如果有代码小scroll的页面无 ...

  5. Python+Selenium 网页自动化 exe 程序编程实现(最全避坑指南)

    前言 在我的日常工作中,经常需要在内网(不连接互联网)的网页版办公系统中进行抓取网页数据.修改表单等大量重复性的操作.我就想是否可以编写出自动化的工具,将这些日常琐碎的操作变得轻松而高效.虽然本人非计 ...

  6. Python HTMLTestRunner生成网页自动化测试报告时中文编码报错UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6...

    1. 由于使用Python Selenium做网页自动化测试时,有截取网页上的中文信息保存到测试结果中,最终出现编码错误如下: File "D:/PycharmProjects/AutoTe ...

  7. Python Selenium.WebDriver 最强详解页面加载策略

    Python Selenium.WebDriver 网页加载策略『详细』 文章目录 Python Selenium.WebDriver 网页加载策略『详细』 一.网页加载策略

  8. python自动访问网页_Python自动化 selenium 网页自动化-在访问一个网页时弹出的浏览器窗口,我该如何处理?...

    相信大家在使用selenium做网页自动化时,会遇到如下这样的一个场景: 在你使用get访问某一个网址时,会在页面中弹出如上图所示的弹出框. 首先想到是利用Alert类来处理它. 然而,很不幸,Ale ...

  9. Python selenium —— 用chrome的Mobile emulation模拟手机浏览器测试手机网页

    很多人发现chrome有项功能,就是在开发者工具里能够模拟手机打开网页,便想能否用selenium对此进行自动化测试.答案当然是yes! 今天博主便给大家分享下如何用chrome的MobileEmul ...

最新文章

  1. redis 自减命令_Redis 实战 —— 04. Redis 数据结构常用命令简介
  2. VTK:隐式球体用法实战
  3. .Net Core with 微服务 - 架构图
  4. Java访问静态常量_Java如何在Spring EL中访问静态方法或常量?
  5. centos7 下 sudo yum install 报错镜像找不到
  6. [Python WEB开发] 使用WSGI开发类Flask框架 (二)
  7. 错误解决:当前目录下有so,提示 error while loading shared libraries
  8. 学生请假管理系统--UML画图
  9. STK和c语言集成开发,STKX组件实现c#与stk的集成.pdf
  10. allegro 过孔删除不掉
  11. 干货丨1.3万字简述,PRD到底怎么写
  12. 美国乡村音乐历史[[[磁性的声音-成熟男人的味道-John Michael Montgomery]]]
  13. 【Python百日进阶-Web开发-Feffery】Day378 - fac数据展示17:AntdTable 表格 (5)示例:表格校验、监听
  14. 关于微信小程序跳转到H5,然后从H5又跳回微信小程序问题的资料
  15. Eclipse Error - Error notifying a preference...
  16. 利用Java求解“鸡兔同笼问题”:鸡和兔在一个笼子里,共有腿100条,头40个,问鸡兔各有几只?
  17. 心得体会标题大全_心得体会题目大全
  18. 【动画消消乐 】HTML+CSS 吃豆豆动画 073
  19. 生命不息,折腾不止 ~ 旧PC改造之家庭影音
  20. 使用ThreeJs从零开始构建3D智能仓库——第一章(一切的基础)

热门文章

  1. 各种音视频编解码学习详解之 编解码学习笔记(三):Mpeg系列——Mpeg 1和Mpeg 2
  2. 国内Linux笔记天花板,不接受反驳!
  3. 大内高手—内存管理器
  4. xxl-job源码解读:调度器schedule
  5. V8源码边缘试探-黑魔法指针偏移
  6. Chrome插件安装办法【PC端】
  7. CSS在Mac /Win上兼容显示
  8. kali liunx安装拼音输入法,必须成功,只需5步
  9. 微信和QQ内置浏览器停止访问该网页,微信域名被屏蔽的解决方案
  10. Android 程序员的技术栈大全(1),中高级Android面试题目汇总解答