2013-02-22 12 views
5

Ho una pagina Web in cui sono presenti alcune API JS che non alterano la dom, ma restituiscono alcuni numeri. mi piacerebbe scrivere un'applicazione NodeJS che scarica tali pagine ed esegue queste funzioni nel contesto della pagina scaricata.Esecuzione di JavaScript raschiato con cheerio

Stavo guardando cheerio per lo scraping della pagina .. ma mentre vedo quanto sia facile navigare e manipolare il DOM con esso, non vedo alcun accesso all'esecuzione delle funzioni della pagina. È possibile farlo?

Devo guardare, invece, a jsdom?

Grazie

+0

[questo] (http://stackoverflow.com/a/7978072/2172543) è la risposta SO migliore che ho trovato finora sulla tua domanda. Non è strettamente relativo all'esecuzione di pagine Web javascript, riguarda l'analisi HTML. – Marcel

risposta

1

Cheerio e jsdom sono entrambi i raschietti HTML e non hanno alcuna nozione di eseguire JavaScript. Se l'API a cui desideri accedere è scritta in JavaScript, c'è poco che ti impedisca di estrarli e di eseguirli all'interno del nodo. Attenzione però, il download/l'esecuzione di JavaScript arbitrario può rappresentare un enorme rischio per la sicurezza. Se si desidera simulare il comportamento di un browser, vedere http://phantomjs.org/. Questo è un browser senza testa per Node e può fare tutto ciò che può anche un normale browser.

+1

Si noti che se si desidera eseguire JS in modo sicuro in Node, è perfettamente fattibile tramite il modulo 'vm' che ha un metodo' runInContext' che è completamente isolata dal resto del codice (ma può ancora risorse maiale). –

+2

jsdom ** non è ** solo un raschietto HTML senza alcuna nozione di esecuzione di JavaScript. Vedere la documentazione: [inizializzazione del ciclo di vita] (https://github.com/tmpvar/jsdom/blob/master/README.md#initialization-lifecycle) e [Per l'hardcore: jsdom.jsdom] (https: // GitHub. com/tmpvar/jsdom/blob/master/README.md # for-the-hardcore-jsdomjsdom) – rsp

2

Sembra che tu voglia utilizzare PhantomJS, che fornirà l'output completamente renderizzato, e quindi usare cheerio su quello.

Problemi correlati