extraer contenido de un sitio web externo generado por javascript

Sé cómo extraer contenido html de un sitio web externo con php y analizarlo, pero el problema es que el contenido que quiero extraer se genera mediante una función de JavaScript.

El código se ve así:

getCotizaciones("cotizaciones_busca.dat");

Me gustaría extraer todo el contenido generado por esa función. Esta es la página web desde la que bash extraer el contenido: http://www.bvl.com.pe/neg_rv_alfa.html#

Intenté esto, pero no está funcionando:

 $html = new DOMDocument(); $html->loadHtmlFile('http://www.bvl.com.pe/neg_rv_alfa.html#'); $xpath = new DOMXPath($html); $nodelist = $xpath->query('//*[@id="div"]/div[4]'); echo $output = $nodelist->item(0)->nodeValue; // and this is the output I get: getCotizaciones("cotizaciones_busca.dat"); 

Desafortunadamente, no puede ejecutar código JavaScript usando DOM o cualquier otra función de PHP que cargue fonts externas, por ejemplo, get_file, curl, ect. Necesita un comstackdor de JavaScript, o un lenguaje de progtwigción necesita un complemento para comstackr JavScript (por ejemplo, WebKit en C ++) PHP no tiene ese soporte.

Sin embargo, lo que puedes hacer es ver cómo se generan los datos en un navegador y cómo se muestran esos datos. Lo hice por ti y descubrí que la cuadrícula se genera haciendo una solicitud a diferentes URL. Entonces, en lugar de llamar a 'http://www.bvl.com.pe/neg_rv_alfa.html#' que llama a la función de JavaScript getCotizaciones("cotizaciones_busca.dat"); que a su vez llama a esta URL usando ajax.

http://www.bvl.com.pe/includes/cotizaciones_busca.dat

esta url es la información que necesita y la carga a través de DOM o lo que sea>

Protip : use firebug o la consola de herramienta de desarrollo para el navegador que elija. cada vez que vea una solicitud de ajax, vea qué hace, dónde hace una solicitud y cuáles son los parámetros. Compruebe el origen del archivo js donde se almacena la función. Vea lo que hace. En su instancia http://www.bvl.com.pe/js/cabecera_pie.js , verá que está llamando a una solicitud de AJAX según lo que haga clic en el usuario. replica eso en phpb antes de domload, etc.

No creo que sea posible usar solo PHP.

Pero puede ejecutar el navegador en un proceso separado, cargar la página y ejecutar javascript, luego puede obtener los resultados.

Eso es bastante fácil de hacer usando PhantomJS – http://phantomjs.org/ .

Tendrás que preparar el archivo javascript que cargará la página, simular la entrada del usuario si es necesario, buscar información en el DOM y guardar los resultados en algún lugar usando la API del archivo PhantomJS, luego cargar los resultados en PHP. Puede comenzar con ejemplos: consulte https://github.com/ariya/phantomjs/blob/master/examples/pizza.js