2010-10-23 10 views
0

Pourquoi ce code ne fonctionne pas? Je veux enregistrer dom après js exécuter à cette page et je veux utiliser qt sans gui. Désolé pour mon anglais.Pyqt enregistrer dom dans le fichier

#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() 

Répondre

2

Vous devez créer un QApplication avant d'exécuter d'autres tâches.

Ajouter ceci:

import sys 
from PyQt4 import QtGui 

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

À JOUR: De plus, changer le code, car QWebPage ne dispose pas d'une méthode de charge:

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, Comment puis-je ouvrir le html fichier localement? Sans téléchargement – Artyom

+0

self.webView.load (open ("html.html"). Read()) ne fonctionne pas – Artyom

+1

Vous pouvez utiliser setHtml: * void QWebView :: setHtml (const QString & html, const QUrl & baseUrl = QUrl()) * – rubik

Questions connexes