Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php][psml][curl] pozyskiwanie danych ze strony
krom
post 17.02.2011, 05:06:59
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 17.02.2011

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


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.

Ten post edytował krom 17.02.2011, 05:07:56
Go to the top of the page
+Quote Post
cycofiasz
post 17.02.2011, 10:36:00
Post #2





Grupa: Zarejestrowani
Postów: 711
Pomógł: 127
Dołączył: 5.07.2008
Skąd: Łódź

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


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
Go to the top of the page
+Quote Post
krom
post 17.02.2011, 18:35:33
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 17.02.2011

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


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ł?
Go to the top of the page
+Quote Post
greycoffey
post 17.02.2011, 20:16:52
Post #4





Grupa: Zarejestrowani
Postów: 320
Pomógł: 29
Dołączył: 3.04.2010

Ostrzeżenie: (20%)
X----


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ć?

Ten post edytował greycoffey 17.02.2011, 20:17:33
Go to the top of the page
+Quote Post
krom
post 18.02.2011, 17:26:43
Post #5





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 17.02.2011

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


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.
Go to the top of the page
+Quote Post
greycoffey
post 18.02.2011, 19:46:29
Post #6





Grupa: Zarejestrowani
Postów: 320
Pomógł: 29
Dołączył: 3.04.2010

Ostrzeżenie: (20%)
X----


  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. ?>


Ten post edytował greycoffey 18.02.2011, 19:46:53
Go to the top of the page
+Quote Post
krom
post 19.02.2011, 07:42:06
Post #7





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 17.02.2011

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


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)
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 13.06.2025 - 04:32