Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][JS] Parsowanie strony - pobieranie tablicy js
Forum PHP.pl > Forum > PHP
Christy
Witam.

Od kilku dni mam problem z parsowaniem strony chronione hasłem. Za pomocą cURL pobieram stronę, która mnie interesuje i zapisuje ją w zmiennej:

CODE
  1. curl_setopt($ch, CURLOPT_URL, 'http://www.adres.strony.pl');
  2. $wynik = curl_exec($ch);
  3. curl_close($ch);
  4.  
  5. $html = str_get_html($wynik);


Schody zaczynają się przy pobieraniu tego co mnie interesuje. Fragment, który chciałbym pobrać jest postaci:

CODE
  1. var Info = new Array();
  2. Info[0] = new Array();
  3. Info[0]['Name'] = 'Polska';
  4. Info[0]['Population'] = '38538447';
  5.  
  6. Info[0]['Region'] = new Array();
  7. Info[0]['Region'][0] = new Array();
  8. Info[0]['Region'][0]['Name'] = 'Mazowieckie';
  9. Info[0]['Region'][0]['Population'] = '5242911';
  10.  
  11. Info[0]['Region'][0]['City'] = new Array();
  12. Info[0]['Region'][0]['City'][4] = new Array();
  13. Info[0]['Region'][0]['City'][4]['Name'] = 'Warszawa';
  14. Info[0]['Region'][0]['City'][4]['Population'] = '1720398';
  15.  
  16. Info[0]['Region'][0]['City'][5] = new Array();
  17. Info[0]['Region'][0]['City'][5]['Name'] = 'Radom';
  18. Info[0]['Region'][0]['City'][5]['Population'] = '222 496';
  19.  
  20. Info[0]['Region'] = new Array();
  21. Info[0]['Region'][2] = new Array();
  22. Info[0]['Region'][2]['Name'] = 'Dolnośląskie';
  23. Info[0]['Region'][2]['Population'] = '2915238';
  24.  
  25. Info[0]['Region'][0]['City'] = new Array();
  26. Info[0]['Region'][0]['City'][4] = new Array();
  27. Info[0]['Region'][0]['City'][4]['Name'] = 'Wrocław';
  28. Info[0]['Region'][0]['City'][4]['Population'] = '631235';


(Faktyczne dane są inne, ale głównie chodzi o schemat, czyli tablice w tablicach).

Czy jest jakiś łatwy sposób pobrania tej tablicy, bez konieczności parsowania? Czy jedyna możliwość, to funkcje typu: preg_match_all().

Pozdrawiam i z góry dziękuje za pomoc.
zegarek84
Cytat(Christy @ 16.10.2012, 10:37:59 ) *
Czy jest jakiś łatwy sposób pobrania tej tablicy, bez konieczności parsowania?

tak, C++ biblioteka Qt a dokładniej QtWebKit ;]
Christy
A coś bazującego na PHP, js?
zegarek84
w JS możesz pisać pluginy/wtyczki do przeglądarek, więc mógłbyś w tę stronę też iść i napisać parsera jako plugin przeglądarki... z kolei jest też rozwiązanie Serwer Side JavaScript i najbardziej rozwinięte jest chyba Node.js, są tam implementacje DOM, po pobraniu odpowiednich fragmentów mógłbyś skrypt wykonać po stronie serwera... jeśli chodzi o sam PHP to na 99% musiałbyś te dane samemu sobie obrobić... jeszcze jeśli chodzi o wspomniany C++ Qt to można w nim też w JS pisać i miałbyś z poziomu przeglądarki dostęp do zmiennych z wykonanego kodu JS, a i sama biblioteka Qt jest jakby innym łatwiejszym językiem niż C++ choć wciąż to C++, dokumentacja Qt jest dosyć dokładna i jest też dużo przykładów kodu, pisze w nim się dosyć przyjemnie, dodatkowo są kreatory okienek itd.... oczywiście całe Qt opiera się na sygnałach i slotach, ale jeśli umiesz pisać w JS zdarzeniowo to to nawet Ci się by spodobało... sam czas życia obiektów Qt nie koniecznie trzeba kontrolować na sztywno jak to jest w czystym C++, wystarczy przekazać obiektom powiązanym referencję (this) do obiektu nadrzędnego, ale ogólnie warto też zaznajomić się z technikami kontroli życia obiektów promowanych w standardzie C++11 które w sumie były dostępne przy wykorzystaniu BOOST/Qt...

kurcze rozpisałem się trochę dalej nie na temat - sorki i pozdro ;]
Christy
Dzięki wielkie za pomoc. Twoja rada na pewno mi się przyda, często jestem zmuszony do pobierania różnych danych z różnych stron, więc to co zaproponowałeś wydaje się uniwersalną metodą.

W przypadku PHP i Javascript wpadłem na pomysł, że mogę przez PHP wyciąć interesujący mnie kod (dokładnie definicje tablicy w js) i umieścić go w pliku js, z którego w łatwy sposób już mogę wszystko pobierać wszystko co mnie interesuje. Jeszcze się zastanowię, czy da się to zrobić w prostszy sposób. Bez tworzenia pliku.
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.