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入门篇之正则表达式
Oct 20 Python
Python基于smtplib实现异步发送邮件服务
May 28 Python
在Python的Django框架中使用通用视图的方法
Jul 21 Python
简单谈谈Python中的反转字符串问题
Oct 24 Python
Python应用03 使用PyQT制作视频播放器实例
Dec 07 Python
Selenium的使用详解
Oct 19 Python
Python如何爬取实时变化的WebSocket数据的方法
Mar 09 Python
Python2与Python3的区别实例总结
Apr 17 Python
Python字符串处理的8招秘籍(小结)
Aug 13 Python
详解python logging日志传输
Jul 01 Python
python和go语言的区别是什么
Jul 20 Python
详解python内置模块urllib
Sep 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
header()函数使用说明
2006/11/23 PHP
PHP生成条形码大揭秘
2015/09/24 PHP
jQuery向下滚动即时加载内容实现的瀑布流效果
2016/01/07 PHP
PHP中in_array的隐式转换的解决方法
2018/03/06 PHP
CSS中简写属性要注意TRouBLe的顺序问题(避免踩坑)
2021/03/09 HTML / CSS
fireworks菜单生成器mm_menu.js在 IE 7.0 显示问题的解决方法
2009/10/20 Javascript
js清空表单数据的两种方式(遍历+reset)
2014/07/18 Javascript
用javascript对一个json数组深度赋值示例
2014/07/27 Javascript
js小数计算小数点后显示多位小数的实现方法
2016/05/30 Javascript
Highcharts入门之简介
2016/08/02 Javascript
Bootstrap的fileinput插件实现多文件上传的方法
2016/09/05 Javascript
Angular的$http的ajax的请求操作(推荐)
2017/01/10 Javascript
JS优化与惰性载入函数实例分析
2017/04/06 Javascript
微信小程序 引入es6 promise
2017/04/12 Javascript
JS实现的简单标签点击切换功能示例
2017/09/21 Javascript
vue中实现高德定位功能
2019/12/03 Javascript
微信小程序全选多选效果实现代码解析
2020/01/21 Javascript
微信小程序点击滚动到指定位置的实现
2020/05/22 Javascript
使用Python脚本来控制Windows Azure的简单教程
2015/04/16 Python
Python中用于检查英文字母大写的isupper()方法
2015/05/19 Python
python列出目录下指定文件与子目录的方法
2015/07/03 Python
Python + OpenCV 实现LBP特征提取的示例代码
2019/07/11 Python
pycharm双击无响应(打不开问题解决办法)
2020/01/10 Python
适合Python初学者的一些编程技巧
2020/02/12 Python
PyCharm GUI界面开发和exe文件生成的实现
2020/03/04 Python
windows支持哪个版本的python
2020/07/03 Python
CSS3 分类菜单效果
2019/05/27 HTML / CSS
HTML5 Canvas 破碎重组的视频特效的示例代码
2019/09/24 HTML / CSS
html5 Canvas画图教程(2)—画直线与设置线条的样式如颜色/端点/交汇点
2013/01/09 HTML / CSS
viagogo意大利票务平台:演唱会、体育比赛、戏剧门票
2018/01/26 全球购物
俄罗斯儿童和青少年服装、鞋子及配件的在线商店:Orby
2020/02/20 全球购物
会计学专业学生的求职信范文
2014/01/27 职场文书
餐饮采购员岗位职责
2014/03/15 职场文书
客户付款通知书
2015/04/23 职场文书
党员带头倡议书
2015/04/29 职场文书
2019年个人工作总结范文
2019/03/25 职场文书