2009-12-16 4 views
14

Voglio scansionare un sito web che utilizza JavaScript.Programmatic Python Browser con JavaScript

C'è il mechanize, il browser web programmatico per Python. Tuttavia, (comprensibilmente) non interpreta JavaScript. Esiste un browser programmatico per Python che lo fa? In caso contrario, c'è qualche implementazione JavaScript in Python che potrei usare per tentare di crearne una?

risposta

11

Potrebbe essere meglio utilizzare uno strumento come Selenium per automatizzare lo scraping utilizzando un browser Web, quindi il JS viene eseguito e il rendering della pagina è come se fosse per un utente reale.

2

Si potrebbe anche provare a definire i trigger di pagina Chickenfoot sulle pagine in questione, eseguendo le operazioni desiderate sulla pagina e salvando i risultati dell'operazione su un file locale e chiamando Firefox dalla riga di comando all'interno del programma, seguito leggendo il file.

7

Il pacchetto PyV8 avvolge piacevolmente Google's V8 Javascript engine per Python. È particolarmente bello perché non solo puoi chiamare da Python a codice Javascript, ma puoi richiamare da Javascript a codice Python. Questo rende abbastanza semplice implementare i soliti oggetti forniti dal browser (ovvero, tutto nello spazio dei nomi globale di Javascript: "finestra", "documento" e così via), che dovresti fare se dovessi fare una cosa dell'emulatore del browser Python compatibile con Javascript, possibilmente collegando questo con mechanize.

1

ti consiglio di dare un'occhiata ad alcune delle opzioni disponibili a http://wiki.python.org/moin/WebBrowserProgramming - sorprendentemente questa è una domanda comune (ne ho trovate tre su StackOverflow oggi, cercando le parole "python browser" su google). se fai lo stesso, troverai le altre risposte che ho dato.

4

C'è anche spynner "un modulo web browser programmatico stateful per Python con supporto JavaScript/AJAX sulla base del quadro QtWebKit": http://code.google.com/p/spynner/

+2

Ora spostato in GitHub: https://github.com/makinacorpus/spynner –

5

Il mio preferito è PyPhantomJS. È scritto usando Python e PyQt4. È completamente senza testa e puoi controllarlo completamente da JavaScript.

Tuttavia, se si desidera visualizzare effettivamente la pagina, è possibile utilizzare anche QWebView da PyQt4.

+0

Questo è davvero fantastico. Grazie. – jdi

+1

Sfortunatamente il manutentore del progetto non è più in grado di mantenere il progetto. Ma sarà comunque compatibile con la versione 1.4.0. Puoi passare a [PhantomJS] (http://code.google.com/p/phantomjs/) senza perdita di funzionalità (ad eccezione di tutte le fantastiche e nuove funzionalità che PyPhantomJS aveva in confronto, come il supporto per i plug-in ....) . Stanno cercando qualcun altro a subentrare nella manutenzione (core devopment), quindi speriamo che non muoia. :) –