PyQt5 渲染动态网页

来源:互联网 发布:php 数组按字段排序 编辑:程序博客网 时间:2024/04/29 03:51

PyQt5 渲染动态网页

示例代码:

# -*- coding: UTF-8 -*-import sysfrom PyQt5.QtCore import QUrlfrom PyQt5.QtWidgets import QApplicationfrom PyQt5.QtWebEngineWidgets import QWebEnginePage, QWebEngineViewimport lxml.htmlclass Render(QWebEngineView):               # 子类Render继承父类QWebEngineView    def __init__(self, url):        self.html = ''        self.app = QApplication(sys.argv)        QWebEngineView.__init__(self)       # 子类构造函数继承父类,这种写法python2和3通用,还可以是super().__init__()        self.loadFinished.connect(self._loadFinished)        self.load(QUrl(url))        self.app.exec_()    def _loadFinished(self):        self.page().toHtml(self.callable)    def callable(self, data):        self.html = data        self.app.quit()if __name__ == '__main__':    url = 'http://example.webscraping.com/places/default/dynamic'    r = Render(url)    result = r.html    tree = lxml.html.fromstring(result)    a = tree.cssselect('#result')[0].text_content()    print(a)

注意:

1.PyQt版本之间的区别

版本 用法 PyQt4 from PyQt4.QtWebKit import QWebPage, QWebView PyQt5 from PyQt5.QtWebKitWidgets import QWebPage, QWebView PyQt5.6+ from PyQt5.QtWebEngineWidgets import QWebEnginePage, QWebEngineView

可参考:

  • 解决 No module named PyQt5.QtWebKitWidgets

  • Qt Documentation


2.PyQt4中的mainFramePyQt5中已废弃

版本 用法 PyQt4 html = webview.page().mainFrame().toHtml() PyQt5 self.page().toHtml(self.callable)

可参考:

  • https://stackoverflow.com/questions/37754138/how-to-render-html-with-pyqt5s-qwebengineview
原创粉丝点击