Многопоточность веб-страниц Python с ajax

#python #ajax #multithreading #pyqt4

#python #ajax #многопоточность #pyqt4

Вопрос:

Ну, я беспокоюсь пару дней, чтобы решить следующую проблему.. К сожалению, примеров этого не так много, поэтому я спрашиваю вас.

Проблема: многопоточность (параллельная) веб-страниц ( ajax ), которую я использую в настоящее phantomjs время, но она очень медленная, особенно для очистки страниц с несколькими вызовами ajax, поэтому я увидел этот pyqt4 код:

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

class Browser(QWebView):

    def __init__(self):
        self.index=1
        super(Browser, self).__init__()
        self.page().loadFinished.connect(self.print_load_finished)


    def print_load_finished(self):    #I want code generated of second ajax call!!
        if self.index==0:
            frame = self.page().mainFrame()
            #print (frame.toHtml())
            self.close()
        else:
            self.index=0

if __name__=='__main__':
    
    app = QApplication(sys.argv)
    br = Browser()
    url = QUrl('http://www.some_url.com')
    br.load(url1)
    sys.exit(app.exec_())
    
 

И другие для многопоточности, но с urllib.request :

 import sys
import urllib.request
from PyQt4 import QtCore, QtGui


class DownloadThread(QtCore.QThread):

    data_downloaded = QtCore.pyqtSignal(object)

    def __init__(self, url):
        QtCore.QThread.__init__(self)
        self.url = url

    def run(self):
        info = urllib.request.urlopen(self.url).info()
        self.data_downloaded.emit('%sn%s' % (self.url, info))


class MainWindow(QtGui.QWidget):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.list_widget = QtGui.QListWidget()
        self.button = QtGui.QPushButton("Start")
        self.button.clicked.connect(self.start_download)
        layout = QtGui.QVBoxLayout()
        layout.addWidget(self.button)
        layout.addWidget(self.list_widget)
        self.setLayout(layout)

    def start_download(self):
        urls = ['http://www.some_url.com','http://www.some_url.com','http://www.some_url.com']
        self.threads = []
        for url in urls:
            downloader = DownloadThread(url)
            downloader.data_downloaded.connect(self.on_data_ready)
            self.threads.append(downloader)
            downloader.start()

    def on_data_ready(self, data):
        print (data)
        self.list_widget.addItem((data))


if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    window = MainWindow()
    window.resize(640, 480)
    window.show()
    sys.exit(app.exec_())
 

Может ли кто-нибудь сказать мне, как объединить эти два вместе, чтобы я мог наскрести больше страниц ( ajax ) на них? Спасибо!

Комментарии:

1. Кто-нибудь? У кого-нибудь есть какие-либо предложения, пожалуйста ?!