0

Pyqt4 (QwebPage) の下で (asyncio のように) 非同期で Web リクエストを実行することは可能ですか?

たとえば、次のコードで複数の URL を並行して呼び出すにはどうすればよいですか。

#!/usr/bin/env python3.4

import sys
import signal

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

class Crawler( QWebPage ):
    def __init__(self, url):
        QWebPage.__init__( self )
        self._url = url
        self.content = ''

    def crawl( self ):
        signal.signal( signal.SIGINT, signal.SIG_DFL )
        self.connect( self, SIGNAL( 'loadFinished(bool)' ), self._finished_loading )
        self.mainFrame().load( QUrl( self._url ) )

    def _finished_loading( self, result ):
        self.content = self.mainFrame().toHtml()
        print(self.content)
        sys.exit( 0 )

    def main():
        app = QApplication( sys.argv )
        crawler = Crawler( self._url, self._file )
        crawler.crawl()
        sys.exit( app.exec_() )

if __name__ == '__main__':
     crawl = Crawler( 'http://www.example.com')
     crawl.main()

ありがとう

4

2 に答える 2

1

self.mainFrame().load(QUrl(self._url))申し訳ありませんが、Qt自体に実装されているメソッドであるasyncioを介して作業することはできません。

ただし、 quamashイベント ループをインストールし、非同期でaiohttp.requestコルーチンを呼び出して Web ページを取得できます。

しかし、その方法はうまくいきませんQWebPage

于 2014-12-10T11:33:44.100 に答える