У меня есть некоторые трудности с этим, но в основном загружаю страницу в QWebView, возможно ли получать события для контента, который загружается в процессе рендеринга страницы?
Я использую PySide, поэтому, если у вас уже есть QWebView как 'w'
w.load('http://www.unicorns-are-awesome.com/index.html')
И содержимое этого index.html выглядит так:
<html>
...
<head>
<script src="something.js">
</head>
<body>
<img src="unicorns.jpg">
</body>
</html>
QWebView должен загрузить как something.js, так и unicorns.jpg, но до сих пор не существует очевидного способа получить события downloadRequest для этих подчиненных загрузок.
Единственный раз, когда w.page() выдает «downloadRequest», это когда вы меняете URL-адрес в QtWebView, то есть вы получаете обновления только для того, что будет на панели «Расположение».
Как вы можете получать уведомления о каждом элементе, загружаемом веб-страницей в ваш QtWebView?
Обновление: реализация NetworkAccessManager:
from MainWindow import MainWindow
from PySide.QtGui import QApplication
from PySide.QtCore import QCoreApplication
from PySide.QtWebKit import QWebView, QWebSettings
from PySide.QtNetwork import QNetworkReply
class TransferMonitor(object):
def __init__(self):
a = MainWindow._instance # "singleton"
b = a.findChild(QWebView, "browser")
nm = b.page().networkAccessManager()
nm.finished[QNetworkReply].connect( self.dump_url )
def dump_url(self, reply):
# This is probably unnecessary, but
# I wanted to be 100% sure that every get
# was 'fresh'.
QWebSettings.clearMemoryCaches()
# For now all we really do is just dump URLs
# as they're processed. Perhaps later we will intercept.
print reply.url().toString()