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字符编码
Nov 12 Python
安装ElasticSearch搜索工具并配置Python驱动的方法
Dec 22 Python
python模块smtplib学习
May 22 Python
Python 使用PIL中的resize进行缩放的实例讲解
Aug 03 Python
Python3.6使用tesseract-ocr的正确方法
Oct 17 Python
解决pyqt5中QToolButton无法使用的问题
Jun 21 Python
mac系统下Redis安装和使用步骤详解
Jul 09 Python
Win10环境python3.7安装dlib模块趟过的坑
Aug 01 Python
Python HTMLTestRunner如何下载生成报告
Sep 04 Python
接口自动化多层嵌套json数据处理代码实例
Nov 20 Python
python爬虫scrapy基本使用超详细教程
Feb 20 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
全国FM电台频率大全 - 21 海南省
2020/03/11 无线电
使用PHP提取视频网站页面中的FLASH地址的代码
2010/04/17 PHP
PHP和javascript常用正则表达式及用法实例
2014/07/01 PHP
php基于 swoole 实现的异步处理任务功能示例
2019/08/13 PHP
Javascript常考语句107条收集
2010/03/09 Javascript
juqery 学习之三 选择器 简单 内容
2010/11/25 Javascript
jquery子元素过滤选择器使用示例
2013/06/24 Javascript
关于页面嵌入swf覆盖div层的问题的解决方法
2014/02/11 Javascript
jquery使用jxl插件导出excel示例
2014/04/14 Javascript
基于jQuery实现的文字按钮表单特效整理
2014/12/07 Javascript
Nodejs中读取中文文件编码问题、发送邮件和定时任务实例
2015/01/01 NodeJs
JS中字符串trim()使用示例
2015/05/26 Javascript
Node.js编程中客户端Session的使用详解
2015/06/23 Javascript
jQuery实现的倒计时效果实例小结
2016/04/16 Javascript
JavaScript中闭包的写法和作用详解
2016/06/29 Javascript
微信开发 消息推送实现代码
2016/10/21 Javascript
详解vue.js全局组件和局部组件
2017/04/10 Javascript
springMVC + easyui + $.ajaxFileUpload实现文件上传注意事项
2017/04/23 Javascript
详解使用vscode+es6写nodejs服务端调试配置
2017/09/21 NodeJs
微信小程序异步API为Promise简化异步编程的操作方法
2018/08/14 Javascript
vue+element实现表格新增、编辑、删除功能
2019/05/28 Javascript
vue2.0 获取从http接口中获取数据,组件开发,路由配置方式
2019/11/04 Javascript
python数组复制拷贝的实现方法
2015/06/09 Python
Python中字符串的常见操作技巧总结
2016/07/28 Python
Python标准库笔记struct模块的使用
2018/02/22 Python
python利用高阶函数实现剪枝函数
2018/03/20 Python
Python实现对字典分别按键(key)和值(value)进行排序的方法分析
2018/12/19 Python
英国领先的在线旅游和休闲零售商:lastminute.com
2019/01/23 全球购物
几个数据库方面的面试题
2016/07/01 面试题
环境工程大学生自荐信
2013/10/21 职场文书
优秀求职信范文分享
2013/12/19 职场文书
2014年教师业务学习材料
2014/05/12 职场文书
文明单位申报材料
2014/12/23 职场文书
申请吧主发表的感言
2015/08/03 职场文书
CSS3实现模糊背景的三种效果示例
2021/03/30 HTML / CSS
使用python将HTML转换为PDF pdfkit包(wkhtmltopdf) 的使用方法
2022/04/21 Python