小陈步吃人 2022-07-28 17:58 采纳率: 75%
浏览 33
已结题

PyQt5使用QWebEngineView渲染提取数据

在PyQt4中,使用QtWebKit中的QWebView渲染页面,得到原始的html,代码如下:

pp = QApplication([]) 
webview = QWebView() 
loop = QEventLoop() 
webview.loadFinished.connect(loop.quit) 
webview.load(QUrl(url)) 
loop.exec_() 
html = webview.page().mainFrame().toHtml()

但是PyQt5中使用QWebEngineView代替上述的QWebView,我怎么能使用QWebEngineView完成上面那样的获得源html呢?
如下,我的代码可以显示网页,但我怎么得到html文件呢?

url = 'http://example.python-scraping.com/dynamic'
    # html = download(url)
    app = QApplication([])

    webview = QWebEngineView()
    loop = QEventLoop()
    # webview.loadFinished.connect(loop.quit)
    webview.load(QUrl(url))
    webview.show()
    loop.exec_()

  • 写回答

2条回答 默认 最新

  • 小陈步吃人 2022-07-28 18:48
    关注

    已解决

    import sys
    from PyQt5.QtCore import *
    from PyQt5.QtWidgets import *
    from PyQt5.QtWebEngineWidgets import QWebEngineView
    import requests
    import lxml.html
    
    
    class Render(QWebEngineView):  # 子类Render继承父类QWebEngineView
        def __init__(self, url):
            self.html = ''
            self.app = QApplication(sys.argv)
            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.python-scraping.com/dynamic'
        r = Render(url)
        result = r.html
        tree = lxml.html.fromstring(result)
        a = tree.cssselect('#result')[0].text_content()
        print(a)
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月5日
  • 已采纳回答 7月28日
  • 创建了问题 7月28日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度