2013-01-31 13 views
6

Sto recuperando pagine con cURL in PHP. Tutto funziona bene, ma sto recuperando alcune parti della pagina che vengono calcolate con JavaScript una frazione dopo il caricamento della pagina. cURL invia già il codice sorgente della pagina al mio script PHP prima che i calcoli di JavaScript siano eseguiti, ottenendo risultati finali errati. I calcoli sul sito sono recuperati da AJAX, quindi non posso riprodurre quel calcolo in modo semplice. Inoltre non ho accesso al codice della pagina di destinazione, quindi non posso modificare quella pagina di destinazione per adattarla alle mie esigenze di recupero (cURL).C'è un modo per permettere a cURL di attendere fino a quando gli aggiornamenti dinamici della pagina sono fatti?

C'è un modo in cui posso dire cURL di attendere fino a quando tutto il traffico dinamico è finito? Potrebbe essere complicato, a causa di alcuni JavaScript che continuano a inviare dati a un altro dominio che potrebbe comportare lunghi blocchi. Ma almeno posso testare se riesco almeno a ottenere i risultati corretti.

La barra degli strumenti del mio sviluppatore in Safari indica che la pagina è terminata in circa 1.57s. Forse posso dire a cURL di aspettare staticamente anche per 2 secondi?

mi chiedo quali sono le possibilità :)

risposta

4

cURL non esegue alcuna JavaScript o scaricare qualsiasi file di riferimento nel documento. Quindi cURL non è la soluzione per il tuo problema.

Dovrai utilizzare un browser sul lato server, dirgli di caricare la pagina, attendere X secondi e poi chiedere di darti l'HTML.

Sguardo: http://phantomjs.org/ (è necessario utilizzare node.js, non sono a conoscenza di alcuna soluzione PHP).

+0

Fortunatamente è solo un piccolo pezzo di codice. Riscriverò il codice in JavaScript e recupererò i dati con jQuery e PhantomJS. Grazie :) –

+0

C'è un modo per includere PhantomJS semplicemente nella mia pagina HTML locale dove faccio il mio jQuery? –

+0

No. phantom.js utilizza internamente un vero browser webkit, che non è possibile eseguire sul client. –

2

Non conoscendo molto la pagina che si sta recuperando oi calcoli che si desidera includere, ma potrebbe essere un'opzione per cURL direttamente all'URL che serve quelle richieste Ajax. Usa qualcosa come Firebug per ispezionare le chiamate Ajax effettuate sulla tua pagina di destinazione e puoi capire l'URL e tutti i parametri passati. Se hai bisogno della pagina web completa, forse puoi cURL sia la pagina web che l'URL Ajax e combinare i due nel tuo codice PHP, ma poi inizia a diventare disordinato.

+0

Questa è la strada da percorrere, invece di utilizzare un altro programma. –

Problemi correlati