Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [CURL] javascript
Jackblues
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 13.11.2009

Ostrzeżenie: (0%)
-----


Witam,

Chcialbym poprosic o porade ze sciaganiem stron za pomoca CURL.

Stronka ktora probuje otworzyc ma w sobie kawalek kodu
<script language=javascript>function updateprogress(nPercent){document.getElementById('imgprogress').width=nPercent*3;document.getElementById('txtprogress').innerHTML=nPercent+" %";if( nPercent < 100 )setTimeout( 'updateprogress('+(nPercent+1)+')', 75 );}</script>
<script language=javascript>updateprogress(1);</script>
<script language=javascript>document.getElementById('progress').style.visibility="hidden";document.getElementById('progress').style.height="0";document.getElementById('progress').style.position="absolute";</script><br/>
<table border=0 cellpadding=0 cellspacing=0 width=500 class=StoreTable><tr><td colspan="10" align=right>

</table>

Wyglada na to ze za pomoca javascript zaimplementowano petle opozniajaca czytanie tabeli <class=StoreTable>.
Wydaje mi sie ze na serwerze przygotowywana jest odpowiedz dopiero jak stronka zaczyna sie wczytywac.
Jak otwieram strone w pregladarce widac pasek postepu ktory po pewnym czasie znika i pojawia sie tabelka ktora chcialem pobrac.

Niestety curl nie wykonuje javascript - tak ze tabelka ktora pobieram jest pusta.
Probowalem wprowadzic petle opozniajaca podczas czytania naglowka oraz czytania body
curl_setopt($ch, CURLOPT_HEADERFUNCTION, ‘read_header’);
curl_setopt($ch, CURLOPT_WRITEFUNCTION, ‘read_body’);

niestety caly czas w tabeli StoreTable nie ma informacji ktore potrzebuje - tak jakby serwer nie zdazyl jeszcze wypelnic tabeli.

Czy jest jakis sposob zeby zmusic curl do poczekania z pobieraniem strony juz po tym jak rozpocznie jej sciaganie ?

Piotrek
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
webcitron
post
Post #2





Grupa: Zarejestrowani
Postów: 14
Pomógł: 1
Dołączył: 17.11.2008

Ostrzeżenie: (0%)
-----


Technicznie mogę się wypowiedzieć dlaczego tak się dzieje, co jest w zasadzie zupełnie zrozumiałe.
Podczas wywołania strony przez HTTP najpierw wykonuje się PHP, ładuje wynik do przeglądarki, <*> dopiero wtedy (w 99% przeypadków) zaczyna swe działanie JavaScript. Jesli JavaScript odpowiada za wypełnienie właściwie całej strony to przez cURLa chyba nie da się tego zrobić. cURL wchodzi do gry w chwili wyganerowania treści przez PHP a przed załadowaniem JavaScriptu (oznacznie wyżej przez <*>).
Technicznie nie jest możliwe po prostu żeby cURL dostał się do treści wygenerowanej przez JavaScript (przypomiam - JavaScript wykonuje się po stronie przeglądarki, a cURL emuluje tekstową przeglądarkę).
Jak dla mnie problem nierozwiązywalny.. Chyba że prześledzisz JS który generuje te dane (możęsz podejrzeć w podglądzie źródeł) i dostaniesz się bezpośrednio do plików generujących dane.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 13.03.2026 - 05:04