2010-10-23 55 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