Python实现的网页截图功能【PyQt4与selenium组件】


Posted in Python onJuly 12, 2018

本文实例讲述了Python实现的网页截图功能。分享给大家供大家参考,具体如下:

方法一、使用PyQt4的QtWebKit组件

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import sys
import os.path
from PyQt4 import QtGui,QtCore,QtWebKit
class PageShotter(QtGui.QWidget):
  def __init__(self,url,filename,parent=None):
    QtGui.QWidget.__init__(self,parent)
    self.url = url
    self.filename = filename
    self.webpage = None
  def shot(self):
    webview = QtWebKit.QWebView(self)
    webview.load(QtCore.QUrl(self.url))
    self.webpage = webview.page()
    self.connect(webview,QtCore.SIGNAL("loadFinished(bool)"),self.save_page)
  def save_page(self,finished):
    #print finished
    if finished:
      print u"开始截图!"
      size = self.webpage.mainFrame().contentsSize()
      print u"页面宽:%d,页面高:%d" % (size.width(),size.height())
      self.webpage.setViewportSize(QtCore.QSize(size.width()+16,size.height()))
      img = QtGui.QImage(size, QtGui.QImage.Format_ARGB32)
      painter = QtGui.QPainter(img)
      self.webpage.mainFrame().render(painter)
      painter.end()
      filename= self.filename;
      if img.save(filename):
        filepath = os.path.join(os.path.dirname(__file__), filename)
        print u"截图完毕:%s" % filepath
      else:
        print u"截图失败";
    else:
      print u"网页加载失败!"
    self.close()
if __name__=="__main__":
  app = QtGui.QApplication(sys.argv)
  shotter = PageShotter("https://3water.com/", 'shot.png')
  shotter.shot()
  sys.exit(app.exec_())

运行后输出:

QFont::setPixelSize: Pixel size <= 0 (0)
开始截图!
页面宽:1058,页面高:9819
截图完毕:C:\py\3waterPyDemo\src\Demo\shot.png

注:

Python2的32位操作系统安装包可至此下载:https://3water.com/softs/548192.html
64位操作系统下对应PyQt安装包可至此下载:https://3water.com/softs/548197.html)

Python3可直接使用pip命令安装PyQt5库,如:

pip3 install PyQt5-sip

方法二、使用selenium

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import time
from selenium import webdriver
browser = webdriver.Firefox()
browser.set_window_size(1055, 800)
browser.get("https://3water.com/")
browser.find_element_by_id("idClose").click()
time.sleep(5)
browser.save_screenshot("shot.png")
browser.quit()

PS:selenium库同样可以使用pip命令安装:

pip install selenium

另外,使用selenium时还需要下载geckodriver来驱动第三方浏览器,对于selenium3.x版本都会使用geckodriver来驱动firefox,所以需要下载geckodriver.exe,下载地址:https://github.com/mozilla/geckodriver/releases

下载后将geckodriver.exe放在C:\Python27即可(查看环境变量path中是否添加C:\Python27该路径)

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python使用新浪微博API发送微博的例子
Apr 10 Python
django输出html内容的实例
May 27 Python
python处理DICOM并计算三维模型体积
Feb 26 Python
python处理“
Jun 10 Python
Django自定义用户登录认证示例代码
Jun 30 Python
pandas DataFrame 警告(SettingWithCopyWarning)的解决
Jul 23 Python
详解python列表(list)的使用技巧及高级操作
Aug 15 Python
解决Django删除migrations文件夹中的文件后出现的异常问题
Aug 31 Python
python GUI库图形界面开发之PyQt5浏览器控件QWebEngineView详细使用方法
Feb 26 Python
浅谈python元素如何去重,去重后如何保持原来元素的顺序不变
Feb 28 Python
Python 字典一个键对应多个值的方法
Sep 29 Python
Python开发五子棋小游戏
Apr 28 Python
python基础学习之如何对元组各个元素进行命名详解
Jul 12 #Python
详解Python中的分组函数groupby和itertools)
Jul 11 #Python
Python中的groupby分组功能的实例代码
Jul 11 #Python
python中实现字符串翻转的方法
Jul 11 #Python
Python3.7中安装openCV库的方法
Jul 11 #Python
Python实用技巧之利用元组代替字典并为元组元素命名
Jul 11 #Python
Python实用技巧之列表、字典、集合中根据条件筛选数据详解
Jul 11 #Python
You might like
PHP如何编写易读的代码
2007/07/10 PHP
PHPUnit PHP测试框架安装方法
2011/03/23 PHP
php学习之简单计算器实现代码
2011/06/09 PHP
鸡肋的PHP单例模式应用详解
2013/06/03 PHP
50个PHP程序性能优化的方法
2014/06/02 PHP
php实现高效获取图片尺寸的方法
2014/12/12 PHP
PHP实现通用alert函数的方法
2015/03/11 PHP
PHP简单读取PDF页数的实现方法
2016/07/21 PHP
JavaScript Archive Network 集合
2007/05/12 Javascript
ExtJs grid行 右键菜单的两种方法
2010/06/19 Javascript
javascript学习笔记(六) Date 日期类型
2012/06/19 Javascript
javascript中负数算术右移、逻辑右移的奥秘探索
2013/10/17 Javascript
浅析document.ready和window.onload的区别讲解
2013/12/18 Javascript
jquery增加和删除元素的方法
2015/01/14 Javascript
javascript判断并获取注册表中可信任站点的方法
2015/06/01 Javascript
JavaScript中reduce()方法的使用详解
2015/06/09 Javascript
jsp 网站引入外部css或者js失效问题解决
2016/10/31 Javascript
vue实现ToDoList简单实例
2017/02/07 Javascript
详解angular部署到iis出现404解决方案
2018/08/14 Javascript
解决vue 给window添加和移除resize事件遇到的坑
2020/07/21 Javascript
vue项目实现多语言切换的思路
2020/09/17 Javascript
关于uniApp editor微信滑动问题
2021/01/15 Javascript
Python中的闭包详细介绍和实例
2014/11/21 Python
python实现批量监控网站
2016/09/09 Python
Python Sympy计算梯度、散度和旋度的实例
2019/12/06 Python
Python实现图像去噪方式(中值去噪和均值去噪)
2019/12/18 Python
Python3如何在Windows和Linux上打包
2020/02/25 Python
Python如何实现自带HTTP文件传输服务
2020/07/08 Python
python中Django文件上传方法详解
2020/08/05 Python
Python项目打包成二进制的方法
2020/12/30 Python
AmazeUI图片轮播效果的示例代码
2020/08/20 HTML / CSS
Joie官方网上商店:购买服装和女装配饰
2018/06/05 全球购物
冰淇淋店的创业计划书
2014/02/07 职场文书
老人节标语大全
2014/10/08 职场文书
运动员入场前导词
2015/07/20 职场文书
2016年乡镇综治宣传月活动总结
2016/03/16 职场文书