php - content - ¿Hay alguna manera de dejar que cURL espere hasta que se completen las actualizaciones dinámicas de la página?
javascript curl example (2)
Estoy buscando páginas con cURL en PHP. Todo funciona bien, pero estoy buscando algunas partes de la página que se calculan con JavaScript una fracción después de que se carga la página. cURL ya envía la fuente de la página a mi script PHP antes de que se realicen los cálculos de JavaScript, lo que resulta en resultados finales incorrectos. Los cálculos en el sitio son obtenidos por AJAX, por lo que no puedo reproducir ese cálculo de una manera fácil. Tampoco tengo acceso al código de la página de destino, así que no puedo modificar esa página de destino para que se ajuste a mis necesidades de búsqueda (cURL).
¿Hay alguna manera en que pueda decirle a cURL que espere hasta que todo el tráfico dinámico haya finalizado? Puede ser complicado, debido a algunos JavaScripts que continúan enviando datos a otro dominio que pueden provocar bloqueos prolongados. Pero al menos puedo probar si al menos obtengo los resultados correctos.
La barra de herramientas de mi desarrollador en Safari indica que la página está hecha en aproximadamente 1.57s. Tal vez puedo decirle a cURL estáticamente que espere 2 segundos también?
Me pregunto cuáles son las posibilidades :)
No saber mucho sobre la página que está recuperando o los cálculos que desea incluir, pero podría ser una opción enviar un correo directo a la URL que sirve esas solicitudes de AJAX. Use algo como Firebug para inspeccionar las llamadas Ajax realizadas en su página de destino y puede averiguar la URL y los parámetros aprobados. Si necesitas la página web completa, tal vez puedas COMPARTIR tanto la página web como la URL Ajax y combinar los dos en tu código PHP, pero luego comienza a complicarse.
cURL no ejecuta ningún JavaScript ni descarga ningún archivo al que se haga referencia en el documento. Entonces cURL no es la solución para su problema.
Tendrá que usar un navegador del lado del servidor, decirle que cargue la página, esperar X segundos y luego pedirle que le proporcione el código HTML.
Mira: http://phantomjs.org/ (necesitarás usar node.js, no conozco ninguna solución PHP).