zoukankan      html  css  js  c++  java
  • PYQT操作JS并且截图事例

    如何安装PYQT,可以查看我的上一篇文章:http://www.cnblogs.com/liqiu/p/3361948.html

    然后运行下面的带有JS程序的Python脚本即可:

    #-*- coding:utf-8 -*-
    import sys
    import os.path
    import time
    from PyQt4 import QtGui,QtCore,QtWebKit
    
    class PageShotter(QtGui.QWidget):
        def __init__(self,url,parent=None):
            QtGui.QWidget.__init__(self,parent)
            self.url = url
        def shot(self):
            webView = QtWebKit.QWebView(self)
            self.webPage = webView.page()
            webView.load(QtCore.QUrl(self.url))
            self.connect(webView,QtCore.SIGNAL("loadFinished(bool)"),self.savePage)
        def savePage(self,finished):
            #print finished
            if finished:
                print u"开始截图!"
                self.webPage.mainFrame().evaluateJavaScript("document.getElementById('kw').value='liqiu';");
                size = self.webPage.mainFrame().contentsSize()
                print u"页面宽:%d,页面高:%d" % (size.width(),size.height())
                self.resize(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= "shot.png";
                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("http://www.baidu.com/")
        shotter.shot()
        sys.exit(app.exec_())

    这里面可能需要使用JS,修改页面的内容,上面红色的部分已经标出。

    结果:

  • 相关阅读:
    图片轮播
    swoole 内存泄露的问题有没有好的办法解决
    学习Swoole需要掌握哪些基础知识
    通过SSH通道来访问MySQL
    redis常见应用场景
    Redis 消息队列的实现
    PHP-Curl模拟HTTPS请求
    代码重构方向原则指导
    win8.1系统相关
    SQL Server 学习系列之六
  • 原文地址:https://www.cnblogs.com/liqiu/p/3361972.html
Copyright © 2011-2022 走看看