#1 Le 20/10/2011, à 22:53
- sputnick
[résolu] python : peut-on manipuler le DOM dans webkit ?
Salut,
tout est dans le titre, je cherche à par exemple changer l'URL dans le script python et utiliser un événement onload.
Peu importe la version de webkit, ce qui importe c'est que ça marche
++sputnick;
Dernière modification par sputnick (Le 26/10/2011, à 09:52)
Qui veut faire quelque chose trouve un moyen, qui ne veut rien faire trouve une excuse. Proverbe arabe
https://sputnick.fr
Hors ligne
#2 Le 21/10/2011, à 00:04
- AnsuzPeorth
Re : [résolu] python : peut-on manipuler le DOM dans webkit ?
Bjr,
Avec gtk3, tu devrais avoir acces direct au dom ( get_dom_document ).
Avec gtk2 il y a un patch pour la version > 1.1.8, mais il n'est pas très a jour.
Personnellement je m'en passe...
Pour appeler une fonction JS, un simple webview.execute_script(cmdJS)
Je connais 2 façons pour communiquer JS => PY (il en existe surement d'autres).
- Sois en remplacant le titre du document (avec les données qu'on veut envoyer à PY), et on se connecte sur le signal "title-changed" pour le récupérer.
- On connecte webkit sur ."navigation-policy-decision-requested", chaque demande de nouveau document (click sur lien) passera par ce signal, il suffit d'écrire ses liens avec les données que l'on veut. (On peut simuler un click en JS, mais je suppose que tu le sais deja)
Pour l'événement onLoad, il y a aussi un signal.
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#3 Le 21/10/2011, à 00:17
- sputnick
Re : [résolu] python : peut-on manipuler le DOM dans webkit ?
Merci pour ta réponse,
sans vouloir abuser, si tu avait un exemple, ça serais TOP
Qui veut faire quelque chose trouve un moyen, qui ne veut rien faire trouve une excuse. Proverbe arabe
https://sputnick.fr
Hors ligne
#4 Le 21/10/2011, à 14:43
- AnsuzPeorth
Re : [résolu] python : peut-on manipuler le DOM dans webkit ?
Merci pour ta réponse,
sans vouloir abuser, si tu avait un exemple, ça serais TOP
C'est bien parce que tu passes du temps à aider du monde ici, sinon je t'aurais envoyer un RTFM, ou "google est ton ami"
#! /usr/bin/env python
# -*- coding:Utf8 -*-
import webkit
import gtk
def document_load_finished_cb(webview, webframe):
''' Le document html est chargé '''
# on execute du JS dans l'environnement du html.
# ( On charge le html dans le titre )
webview.execute_script("document.title=document.documentElement.innerHTML;")
document = webframe.get_title()
print document
def resource_request_starting_cb(view, frame, source, request, response):
''' requete pour charger un document, html, png, etc,etc '''
uri = source.get_uri()
print "___resource request:",uri
# pour ne pas afficher cette ressource:
#source.set_uri('about:blank')
def nav_request_cb(webview, frame, request, navigation_action, policy_decision):
''' chaque clic sur liens '''
uri = request.get_uri()
print "___navigation request:",uri
# <a href="marker: mes données à transiter"></a>
if uri.startswith("marker:"):
data = uri.split(':',1)[1]
return True # ne charge pas la requete
return False # charge la requete dans le treeview
uri="http://google.com"
window = gtk.Window()
webview = webkit.WebView()
scrolled = gtk.ScrolledWindow()
scrolled.add(webview)
window.add(scrolled)
window.connect('destroy', lambda x: gtk.main_quit())
webview.connect("document-load-finished", document_load_finished_cb)
webview.connect("resource-request-starting", resource_request_starting_cb)
webview.connect("navigation-policy-decision-requested", nav_request_cb)
webview.load_uri(uri)
window.show_all()
gtk.main()
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#5 Le 26/10/2011, à 09:51
- sputnick
Re : [résolu] python : peut-on manipuler le DOM dans webkit ?
Merci, ça m'a donné des pistes pour un projet de screen-scraping avancé mais en PyQt4 : http://forum.kubuntu-fr.org/viewtopic.p … 1#p6758341
Qui veut faire quelque chose trouve un moyen, qui ne veut rien faire trouve une excuse. Proverbe arabe
https://sputnick.fr
Hors ligne
#6 Le 10/11/2011, à 03:34
- frafa
Re : [résolu] python : peut-on manipuler le DOM dans webkit ?
Salut vous
ce post m'a donné envie de regarder ce qui existait en browser python webkit
et je viens de tomber sur lui: pywebkitgtk
http://code.google.com/p/pywebkitgtk/
et nom de dieu que ça marche bien et vavoummmmm, à essayer, je l'adopte,
pas reussit à le faire planter, java et flash ok ...
Hors ligne
#7 Le 10/11/2011, à 18:40
- sputnick
Re : [résolu] python : peut-on manipuler le DOM dans webkit ?
je viens de tomber sur lui: pywebkitgtk
http://code.google.com/p/pywebkitgtk/
et nom de dieu que ça marche bien et vavoummmmm, à essayer, je l'adopte,
pas reussit à le faire planter, java et flash ok ...
Peux tu préciser la spécificité de cette lib et ce qu'elle a d'intéressant pas rapport à gtk + webkit classique ?
Qui veut faire quelque chose trouve un moyen, qui ne veut rien faire trouve une excuse. Proverbe arabe
https://sputnick.fr
Hors ligne
#8 Le 10/11/2011, à 22:39
- frafa
Re : [résolu] python : peut-on manipuler le DOM dans webkit ?
Je n'ai pas fouillé, je suis nullos en python moi ...
ca tourne sans rien compiler tu lance .../pywebkitgtk-1.1.8/demos/browser.py
et ca tourne, enfin chez moi ca tournai avec python et webkit de Ubuntu,
j'ai compilé pour le fun les libs intégrées en local, mais pas plus penché dessus ...
c'est surtout son code python du browser que je trouvait pas mal foutu ...
Hors ligne
#9 Le 11/11/2011, à 00:36
- AnsuzPeorth
Re : [résolu] python : peut-on manipuler le DOM dans webkit ?
Peux tu préciser la spécificité de cette lib et ce qu'elle a d'intéressant pas rapport à gtk + webkit classique ?
Si je dis pas de bêtises, c'est la lib python-webkit normal. Celle qu'on installe via un apt-get (je suis sous la version 1.1.7 sous lucid)
Le browser est juste un exemple de la lib (/usr/share/doc/python-webkit/examples/browser.py).
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne