Qtwebkit et javascript
Question
J'ai une page avec js. Je me dom après ont besoin js à exécuter page. Le texte de Js dans le div avec le nom « sdl ». J'ai besoin de me valeur entre les deux. La valeur ne peut être analysé dans la source de js, il est généré par Js. Comment faire? Désolé pour mon anglais.
La solution
Le DOM est exposé (au moins dans pyqt> = 4.7.4)
document = webview.page().currentFrame().documentElement()
document.findAll("a")
...
http://www.riverbankcomputing.co.uk/ statique / Documents / PyQt4 / html / qwebframe.html
http://www.riverbankcomputing.co.uk/ statique / Documents / PyQt4 / html / qwebelement.html
Autres conseils
En Python, vous pouvez utiliser Ghost, qui est open source et disponible à partir de GitHub. Il est un wrapper Python autour du PyQt4 + WebKit hack qui fonctionne assez bien. Vous pouvez juste faire
import ghost
g = ghost.Ghost()
g.open('http://stackoverflow.com/')
g.content
fait référence au document, post-rendu.
Vous pouvez également évaluer JS dans le document avec la méthode evaluate
, et il va retourner les valeurs JS.
Esprit expose aussi les objets PyQt assez facilement, de sorte que vous pouvez faire des choses à un objet Ghost
que Ghost ne met pas en œuvre, et il va passer à travers.
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, alors que
g.content = '<b>Hello World</b>'
jette un. Il faut un certain dompter, mais il ne faut pas longtemps pour le faire fonctionner la façon dont vous le souhaitez.
Les docs Ghost sucent, mais la source est un fichier unique et assez explicite. J'utilise Esprit et il est très bien. Il suffit de ne pas créer plus d'un objet Ghost
, sinon il a tendance à tout accident.