用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
)?谢谢大家! 有人吗?请问有人有什么建议吗?!