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中使用mechanize模块模拟浏览器功能
May 05 Python
python引用DLL文件的方法
May 11 Python
python实现比较两段文本不同之处的方法
May 30 Python
python getopt详解及简单实例
Dec 30 Python
Python3导入自定义模块的三种方法详解
Apr 13 Python
基于Python List的赋值方法
Jun 23 Python
Python去除字符串前后空格的几种方法
Mar 04 Python
Python绘图Matplotlib之坐标轴及刻度总结
Jun 28 Python
简单了解python中的与或非运算
Sep 18 Python
Python Django2 model 查询介绍(条件、范围、模糊查询)
Mar 16 Python
Python 找出出现次数超过数组长度一半的元素实例
May 11 Python
用python实现一个简单的验证码
Dec 09 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
虫族 Zerg 历史背景
2020/03/14 星际争霸
PHP 根据IP地址控制访问的代码
2010/04/22 PHP
php下foreach提示Warning:Invalid argument supplied for foreach()的解决方法
2014/11/11 PHP
PHP实现的XXTEA加密解密算法示例
2018/08/28 PHP
JavaScript中的16进制字符(改进)
2011/11/21 Javascript
javascript检测页面是否缩放的小例子
2013/05/16 Javascript
浏览器打开层自动缓慢展开收缩实例代码
2013/07/04 Javascript
基于jQuery倾斜打开侧边栏菜单特效代码
2015/09/15 Javascript
js实现内容显示并使用json传输数据
2016/03/16 Javascript
BootStrap创建响应式导航条实例代码
2016/05/31 Javascript
jQuery点击弹出层弹出模态框点击模态框消失代码分享
2017/01/21 Javascript
jquery PrintArea 实现票据的套打功能(代码)
2017/03/17 Javascript
jQuery实现火车票买票城市选择切换功能
2017/09/15 jQuery
IE11下使用canvas.toDataURL报SecurityError错误的解决方法
2017/11/19 Javascript
详解angularjs跨页面传参遇到的一些问题
2018/11/01 Javascript
vue滚动tab跟随切换效果
2020/06/29 Javascript
JavaScript实现英语单词题库
2019/12/24 Javascript
微信小程序如何获取地址
2019/12/24 Javascript
js实现页面图片消除效果
2020/03/24 Javascript
React倒计时功能实现代码——解耦通用
2020/09/18 Javascript
python开发之list操作实例分析
2016/02/22 Python
用PyInstaller把Python代码打包成单个独立的exe可执行文件
2018/05/26 Python
Python3 修改默认环境的方法
2019/02/16 Python
Python minidom模块用法示例【DOM写入和解析XML】
2019/03/25 Python
Python django框架应用中实现获取访问者ip地址示例
2019/05/17 Python
详解python实现交叉验证法与留出法
2019/07/11 Python
python创建学生成绩管理系统
2019/11/22 Python
Python数据可视化图实现过程详解
2020/06/12 Python
HTML5 form标签之解放表单验证、增加文件上传、集成拖放的使用方法
2013/04/24 HTML / CSS
IdealFit官方网站:女性蛋白质、补充剂和运动服装
2019/03/24 全球购物
营销专业应届生求职信
2013/11/26 职场文书
九一八事变演讲稿
2014/09/05 职场文书
本科毕业论文致谢词
2015/05/14 职场文书
用电申请报告范文
2015/05/18 职场文书
vue实现同时设置多个倒计时
2021/05/20 Vue.js
Python 如何利用ffmpeg 处理视频素材
2021/11/27 Python