[Python] pywebkit

mauro mauro a majaglug.net
Gio 16 Gen 2014 18:43:53 CET


Il giorno 16/gen/2014, alle ore 11:32, ~redShadow~ <redshadow a hackzine.org> ha scritto:

> Giusto per fare una prova, questo dovrebbe funzionare:
> 
> import time
> import webkit
> 
> w = webkit.WebView()
> w.load_uri('http://192.168.9.1')
> time.sleep(3)
> w.execute_script('document.title = STR_AJAX_VALUE')
> print w.get_main_frame().get_title()
> 
nada de nada. ho provato anche con tempi piu' lunghi, ma credo che il ragionamento abbia bisogno di una piccola aggiustata di tiro.
> 
> Ovviamente non é il metodo piú pulito per fare questa cosa, ma quello
> sleep di 3 secondi dovrebbe dare tempo agli script della pagina di
> terminare l'esecuzione; un metodo piú pulito puó essere quello di
> wrappare il codice javascript in un handler dell'evento "load", in modo
> da garantire l'esecuzione *dopo* al resto del javascript della pagina,
> anche se, anche in quel caso, la chiamata é asincrona, quindi devi
> comunque trovare un modo di "bloccare" fino all'esecuzione del tuo
> script (penso / spero che esista qualche modo di catturare eventi
> javascript attraverso l'oggetto WebView, comunque..).

credo che comunque questa sia la strada giusta su cui ragionare. WebKit ragiona in modo asincrono. Me ne ero gia' accorto. Negli script di esempio trovati in rete, infatti, vengono usati alcuni segnali che dicono all'ambiente grafico quando la pagina e' stata caricata. Il discorso e' anche sensato. Webkit ragiona con la grafica in un ambiente grafico dove tutto si basa sull'autonomia delle attivita' regolata da segnali e messaggi vari. Caricando velocemente le righe di codice (un classico copia e incolla) nell'interprete, qualche volta l'execute_script riportava errore in quanto non era stato ancora eseguito tutto il codice javascript della pagina.

Ora, essendo il mio caso un po' anomalo, nel senso che non devo usare la grafica, ma devo analizzare una pagina web, credo di dover agire in modo similare. Il semplice sleep evidentemente e' bloccante, quindi non permette a webkit di fare il suo lavoro, almeno nel contesto in cui mi trovo a lavorare). Voglio giocare con qualche thread in modo da rendere webkit autonomo rispetto al mio codice. Vediamo che ne viene fuori.
Certo, e' come sparare con un cannone a una mosca, ma in qualche modo se ne deve venire fuori.

--
mauro
mauro a majaglug.net



-------------- parte successiva --------------
Un allegato non testuale è stato rimosso....
Nome:        signature.asc
Tipo:        application/pgp-signature
Dimensione:  203 bytes
Descrizione: Message signed with OpenPGP using GPGMail
URL:         <http://lists.python.it/pipermail/python/attachments/20140116/23590632/attachment.pgp>


Maggiori informazioni sulla lista Python