Как отобразить html с помощью QWebView. Python?

Как отобразить веб-страницу в формате HTML в консоли.

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 next? how to do something like:
# print view.read() ???
# to display something similar to that:
# <html><head></head><body></body></html>

Ответ 1

Поскольку QT является асинхронной библиотекой, у вас, вероятно, не будет никакого результата, если вы сразу же попытаетесь просмотреть html-данные своего веб-браузера после вызова нагрузки, потому что он немедленно возвращается и будет запускать сигнал 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_()