Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 20/10/2011, à 23: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 wink

++sputnick;

Dernière modification par sputnick (Le 26/10/2011, à 10:52)


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#2 Le 21/10/2011, à 01: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.

http://webkitgtk.org/reference/ch02.html


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, à 01: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 smile


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#4 Le 21/10/2011, à 15:43

AnsuzPeorth

Re : [résolu] python : peut-on manipuler le DOM dans webkit ?

sputnick a écrit :

Merci pour ta réponse,

sans vouloir abuser, si tu avait un exemple, ça serais TOP smile

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" tongue

#! /usr/bin/env python
# -*- coding:Utf­8 ­-*-

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, à 10: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


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#6 Le 10/11/2011, à 04:34

frafa

Re : [résolu] python : peut-on manipuler le DOM dans webkit ?

Salut vous smile
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, à 19:40

sputnick

Re : [résolu] python : peut-on manipuler le DOM dans webkit ?

frafa a écrit :

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 ?


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#8 Le 10/11/2011, à 23: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, à 01:36

AnsuzPeorth

Re : [résolu] python : peut-on manipuler le DOM dans webkit ?

sputnick a écrit :

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