2010-10-23 69 views
0

为什么此代码不起作用? 我想在这个页面执行js后保存dom,并且我希望不使用gui的情况下使用qt。 对不起,我的英文。Pyqt将dom保存到文件

#coding:utf-8 
from PyQt4 import QtCore, QtWebKit 


class Sp(): 
    def save(self): 
     print "call" 
     data = self.webView.page().currentFrame().documentElement().toInnerXml() 
     open("htm","w").write(data) 
    def main(self): 
     self.webView = QtWebKit.QWebPage() 
     self.webView.load(QtCore.QUrl("http://www.google.com")) 
     QtCore.QObject.connect(self.webView,QtCore.SIGNAL("loadFinished(bool)"),self.save) 
s = Sp() 
s.main() 

回答

2

你必须先创建一个QApplication才能执行其他的东西。

补充一点:

import sys 
from PyQt4 import QtGui 

app = QtGui.QApplication(sys.argv) 
s = Sp() 
s.main() 
sys.exit(app.exec_()) 

修订:另外,更改代码,因为QWebPage没有负载方法:

import sys 
from PyQt4 import QtGui, QtCore, QtWebKit 

class Sp(): 
    def save(self): 
     print "call" 
     data = self.webView.page().currentFrame().documentElement().toInnerXml() 
     open("htm","w").write(data) 
     print 'finished' 
    def main(self): 
     self.webView = QtWebKit.QWebView() 
     self.webView.load(QtCore.QUrl("http://www.google.com")) 
     QtCore.QObject.connect(self.webView,QtCore.SIGNAL("loadFinished(bool)"),self.save) 

app = QtGui.QApplication(sys.argv) 
s = Sp() 
s.main() 
sys.exit(app.exec_()) 
+0

THX,我怎么能打开HTML文件在本地?没有下载 – Artyom 2010-10-23 10:47:51

+0

self.webView.load(打开(“html.html”)。read())不起作用 – Artyom 2010-10-23 10:48:59

+1

您可以使用setHtml:* void QWebView :: setHtml(const QString&html,const QUrl&baseUrl = QUrl() )* – rubik 2010-10-23 10:54:14