Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Odczytanie zawartości stron wywołanych z CURL
Forum PHP.pl > Forum > Przedszkole
amii
Otóż potrzebuje odstać się do zawartości strony, do tego używam file_get_contents . Problem w tym, że aby dostać się do tych stron muszę je najpierw wywołać z odpowiednimi parametrami POST poprzez Curl.


  1. function curl($url, $args) { //wywołujemy stronę za pomocą CURL $url - adres strony, $args - argumenty dla POST
  2. $ch = curl_init($url);
  3. curl_setopt($ch, CURLOPT_POST, 1);
  4. curl_setopt($ch, CURLOPT_POSTFIELDS, $args);
  5. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  6. curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookies.txt');
  7. curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookies.txt');
  8. $wykonaj = curl_exec($ch);
  9. curl_close($ch);
  10. return $wykonaj;
  11. }


Funkcja wywoływana jest w ten sposób:

  1. $url = 'http://www.naukajazdy.pl/szukaj_osrodka_wyniki.html'; //adres strony
  2. $parametr = urldecode('kategorie%5B%5D=3'); //odkodowujemy parametr
  3. $args = array('fromSearch=1', 'wojewodztwo_id=0', 'miasto=', $parametr, 'x=18', 'y=9'); //lista parametrów dla POST
  4. $funkcja = curl($url, $args);
cros
Cytat(amii @ 25.04.2010, 15:38:10 ) *
Otóż potrzebuje odstać się do zawartości strony, do tego używam file_get_contents . Problem w tym, że aby dostać się do tych stron muszę je najpierw wywołać z odpowiednimi parametrami POST poprzez Curl.


  1. function curl($url, $args) { //wywołujemy stronę za pomocą CURL $url - adres strony, $args - argumenty dla POST
  2. $ch = curl_init($url);
  3. curl_setopt($ch, CURLOPT_POST, 1);
  4. curl_setopt($ch, CURLOPT_POSTFIELDS, $args);
  5. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  6. curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookies.txt');
  7. curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookies.txt');
  8. $wykonaj = curl_exec($ch);
  9. curl_close($ch);
  10. return $wykonaj;
  11. }


Funkcja wywoływana jest w ten sposób:

  1. $url = 'http://www.naukajazdy.pl/szukaj_osrodka_wyniki.html'; //adres strony
  2. $parametr = urldecode('kategorie%5B%5D=3'); //odkodowujemy parametr
  3. $args = array('fromSearch=1', 'wojewodztwo_id=0', 'miasto=', $parametr, 'x=18', 'y=9'); //lista parametrów dla POST
  4. $funkcja = curl($url, $args);

No i w czym tkwi twoj problem?
Bo nie kapuje?
Zrodlo strony zwraca ci funkcja curl_exec($ch) i nie musisz juz uzywac file_get_contents..
amii
CURL zwraca zawartość strony tyle, że nie o to chodzi. Ta strona, którą zwraca CURL to szukajka wywoływana z parametrami przesyłanymi metodą POST.

Natomiast w pętli chce przefiltrować wyniki, które wyglądają w ten sposób: http://www.naukajazdy.pl/szukaj_osrodka_wy...?pageNo=$1
Nie mogę dać pętli po $1 po szukajka wymaga właśnie dostarczenia parametrów. Chodzi zatem o to aby najpierw wywołać szukajkę z odpowiednimi parametrami a później przelecieć w pętli po wynikach.
cros
Ale z tego co widze to ta "szukajka" nie dziala na danych POST, tylko na zwyklych GETach, wiec wystarczy ci file_get_contents.
np. tak:
  1. $zrodlo = file_get_contents("http://www.naukajazdy.pl/szukaj_osrodka_wyniki.html?fromSearch=1&subject=school&FSF_search=auto&sub.x=28&sub.y=7&sub=Go!");

Pozniej z otrzymanego zrodla wyciagasz co chcesz za pomoca preg_match_all.
Chyba ze nie o to ci chodzi.
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.