У меня есть некоторые трудности с этим, но в основном загрузка страницы в 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 должен загрузить оба thing.js и unicorns.jpg - но пока не существует очевидного способа получения событий downloadRequest для этих подчиненных загрузок.
Единственный раз, когда 'downloadRequest 'отправляется с помощью w.page (), когда вы изменяете URL в QtWebView, т.е. вы получаете обновления только для того, что будет в строке «Location».
Как вы можете получать уведомления для каждый элемент, который веб-страница загружает в ваш 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()