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创建和删除目录的方法
Apr 29 Python
使用SAE部署Python运行环境的教程
May 05 Python
Python使用正则表达式抓取网页图片的方法示例
Apr 21 Python
读取本地json文件,解析json(实例讲解)
Dec 06 Python
python多维数组切片方法
Apr 13 Python
Python3 使用cookiejar管理cookie的方法
Dec 28 Python
Python常见的pandas用法demo示例
Mar 16 Python
Python 3.6 -win64环境安装PIL模块的教程
Jun 20 Python
使用Python的datetime库处理时间(RPA流程)
Nov 24 Python
Python解释器以及PyCharm的安装教程图文详解
Feb 26 Python
[原创]赚疯了!转手立赚800+?大佬的python「抢茅台脚本」使用教程
Jan 12 Python
python3.9.1环境安装的方法(图文)
Feb 02 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中的正则表达式函数介绍
2012/02/27 PHP
基于递归实现的php树形菜单代码
2014/11/19 PHP
php解决约瑟夫环算法实例分析
2019/09/30 PHP
仿服务器端脚本方式的JS模板实现方法
2007/04/27 Javascript
IE6与IE7中,innerHTML获取param的区别
2009/03/15 Javascript
有关DOM元素与事件的3个谜题
2010/11/11 Javascript
JavaScript让Textarea支持tab按键的方法
2015/06/26 Javascript
全面解析Bootstrap中tab(选项卡)的使用方法
2016/06/06 Javascript
js实现当鼠标移到表格上时显示这一格全部内容的代码
2016/06/12 Javascript
Javascript6中字符串的四个新用法分享
2016/09/11 Javascript
BootStrap中关于Select下拉框选择触发事件及扩展
2016/11/22 Javascript
jQuery事件_动力节点Java学院整理
2017/07/05 jQuery
vue中各组件之间传递数据的方法示例
2017/07/27 Javascript
vue实现图片加载完成前的loading组件方法
2018/02/05 Javascript
angularJS实现不同视图同步刷新详解
2018/10/09 Javascript
JS原生瀑布流效果实现
2019/04/26 Javascript
jquery实现垂直无限轮播的方法分析
2019/07/16 jQuery
jQuery实现滑动星星评分效果(每日分享)
2019/11/13 jQuery
详细分析Node.js 模块系统
2020/06/28 Javascript
[40:56]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Liquid vs TNC
2018/04/01 DOTA
在Python中使用mongoengine操作MongoDB教程
2015/04/24 Python
对比Python中__getattr__和 __getattribute__获取属性的用法
2016/06/21 Python
Pandas探索之高性能函数eval和query解析
2017/10/28 Python
Python3内置模块pprint让打印比print更美观详解
2019/06/02 Python
Django后台admin的使用详解
2019/07/08 Python
Python使用matplotlib 画矩形的三种方式分析
2019/10/31 Python
你应该知道的Python3.6、3.7、3.8新特性小结
2020/05/12 Python
基于opencv的selenium滑动验证码的实现
2020/07/24 Python
关于html字符串正则判断和匹配的具体使用
2019/12/12 HTML / CSS
苹果中国官方网站:Apple中国
2016/07/22 全球购物
校园报刊亭创业计划书
2014/01/02 职场文书
顶岗实习接收函
2014/01/09 职场文书
食品采购员岗位职责
2014/04/14 职场文书
计算机网络专业自荐书
2014/06/09 职场文书
食品科学与工程专业毕业生求职信范文
2014/07/21 职场文书
2016拓展训练心得体会范文
2016/01/12 职场文书