Как отобразить 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's next? how to do something like:
# print view.read() ???
# to display something similar to that:
# <html><head></head><body></body></html>

1 ответов


поскольку 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_()