不同的 QWebView 对象对相同的 url 产生相同的输出
Different QWebView objects produce identical output for same urls
我发现如果我们用不同的 QWebView 对象并行加载一个 url,我们将得到相同的输出:这个 QWebView 中只有一个会发出真正的请求。这是示例:
from PyQt5.QtCore import QUrl
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWebKitWidgets import QWebView
def load_and_print(url):
view = QWebView()
view.load(QUrl(url))
def on_ready(ok):
print(view.page().mainFrame().documentElement().toPlainText())
view.loadFinished.connect(on_ready)
if __name__ == '__main__':
app = QApplication([])
# This url outputs random number:
url = 'https://www.random.org/integers/?num=1&min=1&max=100&col=1&base=10&format=plain&rnd=new'
load_and_print(url)
load_and_print(url)
app.exec_()
# output:
# 39
# 39
如果url相同,我们如何获得"fair",每个QWebView对象的唯一输出?
PyQt 5.4,windows7
解决方案是禁用缓存:
view.page().settings().setObjectCacheCapacities(0, 0, 0)
我发现如果我们用不同的 QWebView 对象并行加载一个 url,我们将得到相同的输出:这个 QWebView 中只有一个会发出真正的请求。这是示例:
from PyQt5.QtCore import QUrl
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWebKitWidgets import QWebView
def load_and_print(url):
view = QWebView()
view.load(QUrl(url))
def on_ready(ok):
print(view.page().mainFrame().documentElement().toPlainText())
view.loadFinished.connect(on_ready)
if __name__ == '__main__':
app = QApplication([])
# This url outputs random number:
url = 'https://www.random.org/integers/?num=1&min=1&max=100&col=1&base=10&format=plain&rnd=new'
load_and_print(url)
load_and_print(url)
app.exec_()
# output:
# 39
# 39
如果url相同,我们如何获得"fair",每个QWebView对象的唯一输出?
PyQt 5.4,windows7
解决方案是禁用缓存:
view.page().settings().setObjectCacheCapacities(0, 0, 0)