2012-11-14 15 views
10

Come visualizzare la pagina Web in formato HTML nella console.Come visualizzare HTML con QWebView. Pitone?

import sys 
from PyQt4.QtGui import QApplication 
from PyQt4.QtCore import QUrl 
from PyQt4.QtWebKit import QWebView 

app = QApplication(sys.argv) 
view = QWebView() 
view.load(QUrl('http://example.com') 
# What's next? how to do something like: 
# print view.read() ??? 
# to display something similar to that: 
# <html><head></head><body></body></html> 

risposta

20

Come QT è una libreria asincrona, probabilmente non avete alcun risultato se si tenta immediatamente di guardare i dati HTML della visualizzazione web dopo aver chiamato carico, perché restituisce immediatamente, e si attiverà il loadFinished segnale una volta che il risultato è disponibile. Naturalmente puoi provare ad accedere ai dati html allo stesso modo che ho fatto nel metodo _result_available immediatamente dopo aver chiamato carico, ma restituirà una pagina vuota (questo è il comportamento predefinito).

import sys 
from PyQt4.QtGui import QApplication 
from PyQt4.QtCore import QUrl 
from PyQt4.QtWebKit import QWebView 


class Browser(QWebView): 

    def __init__(self): 
     QWebView.__init__(self) 
     self.loadFinished.connect(self._result_available) 

    def _result_available(self, ok): 
     frame = self.page().mainFrame() 
     print unicode(frame.toHtml()).encode('utf-8') 

if __name__ == '__main__': 
    app = QApplication(sys.argv) 
    view = Browser() 
    view.load(QUrl('http://www.google.com')) 
    app.exec_() 
+1

Grazie mille! Il tuo esempio è semplicemente fantastico! – Vor

+1

Prego. – andrean

+0

Grazie, ma quando eseguo questo _result_available() non viene mai chiamato anche se __init __ (self) lo fa. – andyabel