Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][psml][curl] pozyskiwanie danych ze strony
Forum PHP.pl > Forum > PHP
krom
Witam
Mam problem z pozyskaniem strony
  1. http://www.ekoportal.pl/jetspeed/portal/portal/wykaz.psml?stl=1&unit=105060&type=E

Za pomocą Curl`a chciałem pozyskać zamieszczone tam dane, niestety nie wiem jak przechodzić między stronami. Za wszelkie sugestie będę bardzo wdzięczny.
Pozdrawiam.
cycofiasz
Zainstaluj sobie firebuga i patrz co się dzieje w zakładce Sieć. Przy przejściu na kolejną stronę jest wysyłany formularz POST, następnie jest przekierowanie
krom
Witam
Niestety firebug nie pomógł.
Znalazłem tam zmienna pageNumber ale nie zmieniła on nic.
Widocznie jest jakoś inaczej przekazywana niż przez POST.
Ma ktoś jakiś pomysł?
greycoffey
Kiedy klikam z pierwszej strony przycisk na następną, przeglądarka wysyła coś takiego (Firefox - dodatek Live HTTP Headers):

Kod
POST /jetspeed/portal/_ns:YmNhcmRMaXN0c1BvcnRsZXR8ZWFjdGlvbj0xPWxpc3RDYXJkcw__/portal/wykaz.psml HTTP/1.1
Host: www.ekoportal.pl
User-Agent: Mozilla/5.0 (X11; Linux i686; rv:2.0b12pre) Gecko/20110216 Firefox/4.0b12pre
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: pl
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.ekoportal.pl/jetspeed/portal/portal/wykaz.psml?stl=1&unit=105060&type=E
Cookie: JSESSIONID=2C3A2F77D2B02E6E6939910CFFD64D54.jboss01sep1; SEPSESSIONID=SEPSESSION7094d1f3-a985-4ea9-9496-77dd719c4f54.jboss01sep1
Content-Type: application/x-www-form-urlencoded
Content-Length: 78
colSort=&tableName=allFromUnitListTable&ascending=&pageNumber=1&filter_state=0


To jest wysyłane POSTem:
Kod
colSort=&tableName=allFromUnitListTable&ascending=&pageNumber=1&filter_state=0


Już chyba wiesz co zrobić?
krom
Witam
Na początek chciałbym podziękować za dotychczasową pomoc.
Nie wiem czy to właściwy to myślenia ale skleciłem coś takeigo:
  1. <?php
  2.  
  3. $hand = curl_init();
  4. curl_setopt($hand, CURLOPT_URL, 'http://www.ekoportal.pl/jetspeed/portal/portal/wykaz.psml?stl=1&unit=105060&type=E');
  5. curl_setopt($hand, CURLOPT_POST, 1);
  6. curl_setopt($hand, CURLOPT_FOLLOWLOCATION, 1);
  7. curl_setopt($hand, CURLOPT_POSTFIELDS, 'colSort=&tableName=allFromUnitListTable&ascending=&pageNumber=2&filter_state=0');
  8. curl_exec($hand);
  9. curl_close($hand);
  10. ?>


dostałem stronę z informacją

"Portlet is Not Available: CardListsPortlet
Reason: null"

w miejscu gdzie powinny być dane
dodam iż bez przekazywanie parametru POSTFIELDS ładuje się strona ale tylko 1, i nie wiem jak przeskoczyć do choćby 2.
Jestem w kropce. Byłbym wdzięczny za wszelkie sugestie.
greycoffey
  1. <?php
  2.  
  3. $hand = curl_init();
  4. //curl_setopt($hand, CURLOPT_URL, 'http://www.ekoportal.pl/jetspeed/portal/portal/wykaz.psml?stl=1&unit=105060&type=E'); zle, sproboj to co napisalem ponizej
  5. curl_setopt($hand, CURLOPT_URL, 'http://www.ekoportal.pl/jetspeed/portal/_ns:YmNhcmRMaXN0c1BvcnRsZXR8ZWFjdGlvbj0xPWxpc3RDYXJkcw__/portal/wykaz.psml');
  6. curl_setopt($hand, CURLOPT_POST, 1);
  7. curl_setopt($hand, CURLOPT_FOLLOWLOCATION, 1);
  8. curl_setopt($hand, CURLOPT_POSTFIELDS, 'colSort=&tableName=allFromUnitListTable&ascending=&pageNumber=2&filter_state=0');
  9. curl_exec($hand);
  10. curl_close($hand);
  11. ?>
krom
Niestety dotychczasowe sposoby nie przyniosły spodziewanego rezultatu
Zmagając się z tym zadaniem doszedłem do konkluzji iż problemem może być treść nagłówka HTTP przekazywana przez cURL

Obecnie próbowałem używać takiego fragmentu kodu:
  1. <?php
  2. $naglowki = array(
  3. 'Host: www.ekoportal.pl',
  4. 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13',
  5. 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
  6. 'Accept-Language: pl,en-us;q=0.7,en;q=0.3',
  7. 'Accept-Encoding: gzip,deflate',
  8. 'Accept-Charset: ISO-8859-2,utf-8;q=0.7,*;q=0.7',
  9. 'Keep-Alive: 115',
  10. 'Connection: keep-alive',
  11. 'Referer: <a href="http://www.ekoportal.pl/jetspeed/portal/_ns:YWNhcmRMaXN0c1BvcnRsZXR8YzB8ZDA_/portal/wykaz.psml'" target="_blank">http://www.ekoportal.pl/jetspeed/portal/_n...wykaz.psml'</a>,
  12. 'Cookie: JSESSIONID=3790C04872F4D25225A33D53F3D8D4B6.jboss01sep1;',
  13. 'SEPSESSIONID=SEPSESSION346515de-928c-4a42-80fa-3714151affe4.jboss01sep1',
  14. 'Content-Type: application/x-www-form-urlencoded',
  15. );
  16.  
  17. $curl = curl_init('http://www.ekoportal.pl/jetspeed/portal/portal/wykaz.psml?stl=1&unit=105060&type=E');
  18. curl_setopt($curl, CURLOPT_HEADER, 1);
  19. //curl_setopt($curl, CURLOPT_NOBODY, 1);
  20. curl_setopt($curl, CURLOPT_HTTPHEADER, $naglowki);
  21. curl_setopt($curl, CURLOPT_COOKIEJAR, "cookies.txt");
  22. curl_setopt($curl, CURLOPT_COOKIEFILE, "cookies.txt");
  23. curl_setopt($curl, CURLOPT_POST, TRUE );
  24. curl_setopt($curl, CURLOPT_POSTFIELDS, "colSort=&tableName=allFromUnitListTable&ascending=&pageNumber=2&filter_state=0" );
  25. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
  26. curl_setopt($curl, CURLOPT_TIMEOUT,5);
  27. $htt = curl_exec($curl);
  28. echo $htt;
  29. curl_close($curl);
  30. ?>


Pomimo ustawienia nagłówka w firebugu pokazuje mi inne nagłówki o ile zdoła się połączyć.

Kolejna rzecz że ten sam nagłówek w programie Live HTTP Headers działa bez zarzutu pozwalając skakać między stronami(o co w sumie głównie chodzi smile.gif)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.