2012-11-14 3 views
10

Как отображать веб-страницу в формате HTML в консоли.Как отобразить html с помощью QWebView. Python?

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> 

ответ

20

В QT является библиотеку асинхронной, вы, вероятно, не будет иметь никакого результата, если вы сразу же попытаться взглянуть на HTML данные вашего WebView после вызова нагрузки, потому что она сразу же возвращается, и будут вызывать loadFinished сигнал после получения результата. Вы можете, конечно, попытаться получить доступ к данным html так же, как и в методе _result_available, сразу после вызова загрузки, но он вернет пустую страницу (это поведение по умолчанию).

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

Большое спасибо! Ваш пример просто отличный! – Vor

+1

Добро пожаловать. – andrean

+0

Спасибо, но когда я запустил этот _result_available(), он никогда не будет вызван, хотя __init __ (self) делает. – andyabel

 Смежные вопросы

  • Нет связанных вопросов^_^