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 16 Python
Python基于正则表达式实现检查文件内容的方法【文件检索】
Aug 30 Python
Python实现的井字棋(Tic Tac Toe)游戏示例
Jan 31 Python
Python 12306抢火车票脚本 Python京东抢手机脚本
Feb 06 Python
python模仿网页版微信发送消息功能
Feb 24 Python
python smtplib模块实现发送邮件带附件sendmail
May 22 Python
python文件操作之批量修改文件后缀名的方法
Aug 10 Python
对python3标准库httpclient的使用详解
Dec 18 Python
Python实现网站表单提交和模板
Jan 15 Python
浅谈Pycharm中的Python Console与Terminal
Jan 17 Python
pandas的to_datetime时间转换使用及学习心得
Aug 11 Python
Python调用SMTP服务自动发送Email的实现步骤
Feb 07 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
冰滴咖啡制作步骤
2021/03/03 冲泡冲煮
php不允许用户提交空表单(php空值判断)
2013/11/12 PHP
详解php中 === 的使用
2016/10/24 PHP
laravel框架创建授权策略实例分析
2019/11/22 PHP
javascript读取RSS数据
2007/01/20 Javascript
图片自动缩小的js代码,用以防止图片撑破页面
2007/03/12 Javascript
IE JS编程需注意的内存释放问题
2009/06/23 Javascript
删除select中所有option选项jquery代码
2013/08/12 Javascript
用js设置下拉框为只读的小技巧
2014/04/10 Javascript
Js自定义多选框效果的实例代码
2017/07/05 Javascript
Vue中的数据监听和数据交互案例解析
2017/07/12 Javascript
微信小程序 scroll-view实现锚点滑动的示例
2017/12/06 Javascript
Parcel 打包示例(React HelloWorld)
2018/01/16 Javascript
Vue自定义指令写法与个人理解
2019/02/09 Javascript
深入理解Vue keep-alive及实践总结
2019/08/21 Javascript
在layer弹层layer.prompt中,修改placeholder的实现方法
2019/09/27 Javascript
Vue的Eslint配置文件eslintrc.js说明与规则介绍
2020/02/03 Javascript
如何使用 JavaScript 操作浏览器历史记录 API
2020/11/24 Javascript
Python多层装饰器用法实例分析
2018/02/09 Python
Flask框架Flask-Login用法分析
2018/07/23 Python
对django views中 request, response的常用操作详解
2019/07/17 Python
python Django里CSRF 对应策略详解
2019/08/05 Python
python3 selenium自动化测试 强大的CSS定位方法
2019/08/23 Python
Django项目后台不挂断运行的方法
2019/08/31 Python
Ubuntu下Python+Flask分分钟搭建自己的服务器教程
2019/11/19 Python
使用python 对验证码图片进行降噪处理
2019/12/18 Python
pytorch下大型数据集(大型图片)的导入方式
2020/01/08 Python
PyPDF2读取PDF文件内容保存到本地TXT实例
2020/05/12 Python
Python Pillow(PIL)库的用法详解
2020/09/19 Python
Python 如何实现数据库表结构同步
2020/09/29 Python
尼克松手表官网:Nixon手表
2019/03/17 全球购物
荷兰最大的鞋子、服装和运动折扣店:Bristol
2021/01/07 全球购物
土木工程建筑专业毕业生求职信
2013/10/21 职场文书
学习型家庭事迹材料
2014/12/20 职场文书
廉洁自律承诺书范文
2015/04/28 职场文书
住房公积金贷款工资证明
2015/06/12 职场文书