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使用线程封装的一个简单定时器类实例
May 16 Python
python 美化输出信息的实例
Oct 15 Python
Python使用requests提交HTTP表单的方法
Dec 26 Python
Python判断有效的数独算法示例
Feb 23 Python
Python匿名函数及应用示例
Apr 09 Python
Django分页功能的实现代码详解
Jul 29 Python
用Python画一个LinkinPark的logo代码实例
Sep 10 Python
Python 实现try重新执行
Dec 21 Python
最新2019Pycharm安装教程 亲测
Feb 28 Python
python实现udp聊天窗口
Mar 31 Python
如何使用PyCharm引入需要使用的包的方法
Sep 22 Python
Python常用外部指令执行代码实例
Nov 05 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 email邮箱正则
2008/10/08 PHP
php 输出双引号&quot;与单引号'的方法
2010/05/09 PHP
Thinkphp模板中使用自定义函数的方法
2012/09/23 PHP
php curl请求信息和返回信息设置代码实例
2015/04/27 PHP
PHP时间和日期函数详解
2015/05/08 PHP
自制PHP框架之模型与数据库
2017/05/07 PHP
ExtJS 2.0实用简明教程 之Border区域布局
2009/04/29 Javascript
Javascript的构造函数和constructor属性
2010/01/09 Javascript
js中定义一个变量并判断其是否为空的方法
2014/05/13 Javascript
使用jQuery在对象中缓存选择器的简单方法
2015/06/30 Javascript
nodejs基于express实现文件上传的方法
2018/03/19 NodeJs
微信小程序实现的一键复制功能示例
2019/04/24 Javascript
vue实现分环境打包步骤(给不同的环境配置相对应的打包命令)
2019/06/04 Javascript
详解Vue3.0 前的 TypeScript 最佳入门实践
2019/06/18 Javascript
使用uni-app开发微信小程序的实现
2019/12/13 Javascript
[01:04:39]OG vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
打开电脑上的QQ的python代码
2013/02/10 Python
理解python多线程(python多线程简明教程)
2014/06/09 Python
Python实现简单查找最长子串功能示例
2019/02/26 Python
pyinstaller打包程序exe踩过的坑
2019/11/19 Python
python实现将两个文件夹合并至另一个文件夹(制作数据集)
2020/04/03 Python
利用Python如何制作贪吃蛇及AI版贪吃蛇详解
2020/08/24 Python
使用tkinter实现三子棋游戏
2021/02/25 Python
CSS3 选择器 属性选择器介绍
2012/01/21 HTML / CSS
Myprotein瑞典官方网站:畅销欧洲英国运动营养品牌
2018/01/22 全球购物
医学专业职业生涯规划范文
2014/02/05 职场文书
吃空饷专项治理工作实施方案
2014/03/04 职场文书
团支书竞选演讲稿
2014/04/28 职场文书
会计求职信
2014/05/29 职场文书
乡镇党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
小学生学习保证书
2015/02/26 职场文书
2015年质量月活动总结报告
2015/03/27 职场文书
2015小学教师年度考核工作总结
2015/05/12 职场文书
css3 实现文字闪烁效果的三种方式示例代码
2021/04/25 HTML / CSS
golang switch语句的灵活写法介绍
2021/05/06 Golang
什么是SOLID
2022/03/24 Javascript