Я пытаюсь создать небольшой веб-сервер, который загружает, используя webkit, URL-адрес для извлечения некоторых данных с веб-страницы (например: название, размеры изображений ...) ,Невозможно использовать в одном приложении QWebPage дважды
Я использую PyQt4 для доступа от python к webkit. Для каждого запроса я создаю QThread, который: - создает объект QWebPage, - запускает цикл событий - когда загрузка веб-страницы завершена (loadFinished signal), некоторый код извлекает данные из mainFrame QWebPage и убивает QThread
Это очень хорошо работает при первой загрузке веб-страницы, включая все ее ресурсы (CSS, изображения). Второй раз, когда я запрашиваю сервер для загрузки URL-адреса, загружается веб-страница, но ни один из ее ресурсов (без css, без изображений). Поэтому, когда я пытаюсь получить размеры изображений, размер будет равен 0,0.
Вот код snipset:
# The QThread responsible of loading the WebPage class WebKitThread(QThread): def __init__(self, url): QThread.__init__(self) self.url = url self.start() def run(self): self.webkitParser = WebKitParser(self.url) self.exec_() class WebKitParser(QWebPage): def __init__(self, url, parent=None): QWebPage.__init__(self, parent) self.loadFinished.connect(self._loadFinished) self.mainFrame().load(QUrl(url)) def _loadFinished(self, result): self.computePageProperties() QThread.currentThread().exit() def computePageProperties(self): # Some custom code that reads title, image size... self.computedTitle=XXXXXXXX
Вызывающий код (который отвечает на запрос HTTP) выполняется:
t = WebKitThread(url) t.wait() # do some stuff with properties of WebKitParser print t.webkitParser.computedTitle
Вы можете разместить объявление? – hoju