J'ai une page avec js. J'ai besoin de dom après l'exécution de js sur la page web. Js insère du texte dans la div avec le nom 'sdl'. J'ai besoin de valeur entre. La valeur ne peut pas être analysée dans la source js, elle est générée par Js. Comment le faire? Désolé pour mon anglais.PyQtWebkit et script Java
Répondre
Le DOM est exposé (au moins dans pyqt> = 4.7.4)
document = webview.page().currentFrame().documentElement()
document.findAll("a")
...
http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qwebframe.html
http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qwebelement.html
En Python, vous pouvez utiliser Ghost, qui est open source et disponible de github. C'est un wrapper Python autour du hack PyQt4 + WebKit qui marche plutôt bien. Vous pouvez juste faire
import ghost
g = ghost.Ghost()
g.open('http://stackoverflow.com/')
maintenant g.content
fait référence au document, post-rendu.
Vous pouvez également évaluer JS dans le document avec la méthode evaluate
et les valeurs JS seront renvoyées. Ghost expose également les objets PyQt assez facilement, donc vous pouvez faire des choses à un objet Ghost
que Ghost n'implémente pas, et ça passera.
Je ne me souviens pas exactement, mais je pense que quelque chose comme
g.main_frame.setContent('<b>Hello World</b>')
peut être utilisé pour définir le document, tandis que
g.content = '<b>Hello World</b>'
lancers francs un. Cela demande de l'apprivoiser, mais il ne faut pas longtemps pour que cela fonctionne comme vous le voulez.
Les docs Ghost sont nulles, mais la source est un fichier unique et assez explicite. J'utilise Ghost et ça va. Il suffit de ne pas créer plus d'un objet Ghost
, sinon il a tendance à tout planter.