2011-03-30 14 views
6

Estoy desarrollando una herramienta que necesita descargar una página web del servidor de terceros, ejecutarla como lo haría un navegador y luego analizar el HTML. Lo que me cuesta es que la herramienta necesite analizar el HTML después de que se haya ejecutado javascript y se haya modificado DOM. Intento usar PhantomJS para este propósito y funciona con pequeños fragmentos de código (solo un pequeño documento html con javascript externo que agrega algunos nodos a DOM) pero cuando hago lo mismo con un sitio real (http://www.dba.dk/) estoy no obtener el HTML final después de todas las modificaciones hechas por el código js.PhantomJS y obtener el DOM modificado

Realmente necesito ayuda ya que me he quedado atascado durante más de una semana.

Mi código PhantomJS es simple:

if (phantom.state.length === 0) { 
    if (phantom.args.length === 0) { 
      console.log('Usage: test.js <some URL>'); 
      phantom.exit(); 
    } else { 
      var address = phantom.args[0]; 
      phantom.state = Date.now().toString(); 
      phantom.viewportSize = { width: 1280, height: 800 }; 
      phantom.open(address); 
    } 
} else { 
    var elapsed = Date.now() - new Date().setTime(phantom.state); 
    if (phantom.loadStatus === 'success') { 
      if (!first_time) { 
        var first_time = true; 
        if (!document.addEventListener) { 
          console.log('Not SUPPORTED!'); 
        } 
        phantom.render('result.png'); 
        var markup = document.documentElement.innerHTML; 
        console.log(markup); 
        phantom.exit(); 
      } 
    } else { 
      console.log('FAIL to load the address'); 
      phantom.exit(); 
    } 
} 

el código HTML vuelca en la consola no contiene contenido generado dinámicamente

Respuesta

3

El problema estaba en el plugin de Flash. Las páginas detectaban su ausencia. Una vez que se cargó correctamente, el problema desapareció

Cuestiones relacionadas