Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用ajax实现Python多线程web页面_Python_Ajax_Multithreading_Pyqt4 - Fatal编程技术网

用ajax实现Python多线程web页面

用ajax实现Python多线程web页面,python,ajax,multithreading,pyqt4,Python,Ajax,Multithreading,Pyqt4,好吧,我要花几天时间来解决下一个问题。。不幸的是,这方面的例子并不多,所以我要问你 问题:多线程(并行)网页(ajax),我目前使用的是phantomjs,但是它非常慢,特别是对于具有多个ajax调用的页面,所以我看到了这个pyqt4代码: from PyQt4.QtCore import * from PyQt4.QtGui import * from PyQt4.QtWebKit import * import sys class Browser(QWebView): def _

好吧,我要花几天时间来解决下一个问题。。不幸的是,这方面的例子并不多,所以我要问你

问题:多线程(并行)网页(
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('%s\n%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
)?谢谢大家!

有人吗?请问有人有什么建议吗?!