Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pobieranie danych za pomocą curl
Forum PHP.pl > Forum > PHP
dlinek
Chciałbym pobrać zawartość strony xml i zapisać ją w pliku aby poźniej za pomocą simple XML wyświetlić u siebie na stronie to co mnie interesuje.

zrobiłem coś takiego:

Kod
$file = fopen("team.xml", "w");
$c = curl_init();
curl_setopt($c, CURLOPT_URL, "http://online.sokker.org/xml/team-51625.xml");
curl_setopt($c, CURLOPT_FILE, $file);
curl_exec($c);
curl_close($c);
fclose($file);

i tworzy mi pusty plik team.xml na serwerze nic w nim nie zapisując sad.gif co robię źle questionmark.gif bede bardzo wdzięczny za odp.
michu2510
A czy zajrzałeś tu i tu
dlinek
chodzi o to że te pliki xml są generowane w czasie rzeczywistym czyli nie leżą na serwerze cały czas.
W momencie wpisania adresu : http://online.sokker.org/xml/team-51625.xml
plik team-51625.xml jest generowany i dopiero wyświetlany.
dlatego nie działa include ani file_get_contents. sad.gif

skrypt musiałby najpierw otworzyć strone i dopiero zapisać wygenerowany plik czy to wogóle możliwe questionmark.gif
NuLL
File get content powinno dzialac - pokaz kod albo komunikat smile.gif
dlinek
<?php
$c = curl_init();
curl_setopt($c, CURLOPT_URL, 'http://online.sokker.org/start.php?session=xml');
curl_setopt($c, CURLOPT_POST, 1);
curl_setopt($c, CURLOPT_POSTFIELDS, 'ilogin=d_linek&ipassword=testowy'); //autoryzacja
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
file_put_contents ( 'sokker.xml' , file_get_contents ( 'http://online.sokker.org/xml/team-51625.xml' ) ) ;
$page = curl_exec($c);

curl_close($c);
echo 'Wynik: <br>'.$page;


błędu nie zwraca pobiera i zapisuje plik ale ze strony głównej tj. http://online.sokker.org/xml/

a mi chodzi o ten generowany automatycznie team-51625.xml.



Dowiedziałem sie ze trzeba oszukać serwer wysyłając nagłówek reaquest ze swojej strony tak jakbym to robił ze strony serwera sokker.
Wiec zrobiłem tak:

zbadalem snifferem jaki jest naglowek i ustawilem:

Kod:

  1. <?php
  2. $header[] = "Host: online.sokker.org";
  3. $header[] = "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.Cool Gecko/20071008 Firefox/2.0.0.8";
  4. $header[] = "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";
  5. $header[] = "Accept-Language: pl,en-us;q=0.7,en;q=0.3";
  6. $header[] = "Accept-Encoding: gzip,deflate";
  7. $header[] = "Keep-Alive: 300";
  8. $header[] = "Connection: keep-alive";
  9. $header[] = "Cookie: conf=3944038; lang=pl; XMLSESSID=253ovp92sem3bpdsjo0hvkiks1";
  10. $header[] = "Content-Type: text/xml";
  11.  
  12. $file = fopen("team4.xml", "w");
  13. $c = curl_init();
  14. curl_setopt ($c, CURLOPT_HEADER, 0);
  15. curl_setopt($c, CURLOPT_HTTPHEADER, $header);
  16. curl_setopt($c, CURLOPT_RETURNTRANSFER, 0);
  17. curl_setopt($c, CURLOPT_URL, "http://online.sokker.org/xml/transfers.xml");
  18. curl_setopt($c, CURLOPT_FILE, $file);
  19. curl_exec($c);
  20. echo $file;
  21. curl_close($c);
  22. fclose($file);
  23. echo $file;
  24. ?>


No i pobiera plik ale zamiast poprawnego pliku XML otrzymuję krzaki w stylu:

‹ µ™ÝNŰHÇďyŠQîSćűĂ
é)«Š¶‹€ÝH{ƒÇ€7NŚlSš\öIVÚ›˝ď# ľWgÜ.
rf[áÂŰŁŃ/çüĎ˙F/?/đ)Ęň8] Đ 8 Ń2Lgńňú`đÇůŃP@^čĺL'é2:¬˘|đrĽ7*2˝ĚŻĚ{ ˆôâÝä`ŔÇl0ŢŹ÷Ě5˝›Ś•’ŚÉŃľą´+y”$Qv^ľ6.ßí?Ył]Ţ­ż+F(ío.=ÝçŁ^Dăëűx=[ë0ş¸ŹŁű8ÍV›Ű–Ź<ٸ\ůđúôpş±őăc·‰6Kö€Ü| í?®ŘŰ3]Dc ˇ"8„`@@sĘňNąC‡Ń˜CÍ»ĺőŻ}˙ÔÉ]4FJü¸»±fđíođŰÂ’r®¶łD KTĂň'ď–ďÓü¦ý9Ó|ŚŰŘ{˜rNÇ^¤ ` ƒTU�2J<P’- b$Pw
PB0ę'@§:+48Îô"ź¤ě)=`#\)ć%K,YČH*d q†*cÍ©JA8iOU{˘úF_źÄ·QŽBň „u'?TCFaćŻÂcé‰TĆP


rozmiar pliku sie zgadza ale to dalej nie to sad.gif ktoś wie dlaczego tak się dzieje questionmark.gif
marekk
Przyłączam się do pytania, mam ten sam problem.

Czy zna ktoś jakąs skuteczną metodę pobierania takich danych, niekoniecznie z wykorzystaniem curla?
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.