对比python实现网页截图的方案

背景描述
最近在为部门编写一个自动化对比工具,涉及到将html截图。 之前从未接触过页面自动截图,因此尝试了几种不同方案。

编程语言 python 3.6

方案零 使用webbrowser和ImageGrab

1、实现自动预览html并截图有以下几个步骤

  • 浏览器打开html
  • 对浏览器页面进行截图
  • 将截图保存到指定位置

2、功能实现

import webbrowser
from PIL import ImageGrab
# 默认浏览器打开
#webbrowser.open_new(url) 
# 使用 safari 打开
#webbrowser.get('safari').open_new(url)
# 在浏览器中用新标签打开
#webbrowser.open_new_tab(url) 
# 在Safari中新建标签并打开
#webbrowser.get('safari').open_new_tab(url)

webbrowser.open(url,new=0,autoraise=True)
im = ImageGrab.grab()
im.save("","jpeg")

3、缺点

  1. 打开默认浏览器时
    默认浏览器是什么,浏览器处于什么状态都不知晓。
  2. 浏览器显示html时
    如果用户此时产生了其他动作,会对之后的截图产生影响。
  3. 屏幕截图时
    将整个屏幕都进行截图,截图中除了html页面正文,同时也包含了浏览器等当前屏幕包含的无关信息。
  4. 如果页面较大,需要上下翻页
    屏幕截图无法截取全部页面。

方案一 使用phantomjs

1、准备

  • 安装python selenium 库
    推荐使用pip install selenium==2.48.0。通过pip默认安装版本为3.14.1。可能会出现报错

warnings.warn('Selenium support for PhantomJS has been deprecated, please use headless ’

  • 下载phantomjs并解压
    phantomjs下载地址,支持win,linux,mac os等不同系统安装。将phantomjs.exe放到所运行的python的Scripts文件夹下。

2、功能实现

from selenium import webdriver
# 使用webdirver.PhantomJS()方法新建一个phantomjs的对象
# 此处添加phantomjs.exe的路径,否则会报错
brower = webdriver.PhantomJS(executable_path="/data/phantomjs-2.1.1-linux-x86_64/bin/phantomjs") 
brower.get("http://phantomjs.org/download.html") 
brower.maximize_window()  
brower.viewportSize={'width':1024,'height':800}
brower.save_screenshot(“/data/phantomjs.png”)  
brower.quit()

3、优缺点
优点:后台操作不需打开浏览器,用户不会通过误操作对工具产生影响
缺点:速度慢

方案二 使用浏览器驱动

1、准备

  • 安装python selenium 库
    推荐使用pip快速安装最新版本
  • 安装浏览器驱动driver
    chromedriver 下载地址
    Firefox的驱动geckodriver 下载地址
    IE的驱动IEdriver 下载地址
  • 添加路径
    下载解压后,将chromedriver.exe , geckodriver.exe , Iedriver.exe任选其一复制到Python的安装目录,例如 D:\python 。
  • 添加Path
    将Python的安装目录添加到系统环境变量的Path下面。

2、功能实现

from selenium import webdriver
brower = webdriver.Chrome()
brower.get("https://www.google.com/")
brower.maximize_window()
brower.save_screenshot("/data/google.png")
brower.quit()

3、优缺点
优点:速度快
缺点:需要打开浏览器

你可能感兴趣的:(python)