2

我正在尝试在辅助线程中使用 webkit 执行网络请求,并执行所有处理,例如在同一线程中抓取数据。但是,我很困惑为什么 QWebPage 的信号 loadFinished 没有连接。请赐教,因为我还在学习。

import sys
from PyQt4.QtCore import *
from PyQt4.QtWebKit import *
from PyQt4.QtGui import *

class HeadlessBrowser(QObject):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.page = QWebPage()

    def browse_page(self, url):
        qDebug('method browse_page called.') #This is called.
        url = QUrl(url)
        self.page.mainFrame().load(url)
        self.page.loadFinished.connect(self.process_page) #Not executed. Why?

    def process_page(self):
        qDebug('method process_page called.') #This is not called. Why?
        #Convert to html
        print(self.page.mainFrame().toHtml())

class WorkerThread(QThread):
    def __init__(self, parent=None):
        super().__init__(parent)

    def run(self):

        br = HeadlessBrowser()
        br.browse_page('http://www.google.com')

    def __del__(self):
        self.wait()

def main():
    app = QApplication(sys.argv)
    thread = WorkerThread()
    thread.start()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()
4

0 回答 0