Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][JS] Parsowanie strony - pobieranie tablicy js
Christy
post 16.10.2012, 09:37:59
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 6.08.2007

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


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.
Go to the top of the page
+Quote Post
zegarek84
post 16.10.2012, 12:43:04
Post #2





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


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 ;]


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post
Christy
post 16.10.2012, 14:08:32
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 6.08.2007

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


A coś bazującego na PHP, js?
Go to the top of the page
+Quote Post
zegarek84
post 16.10.2012, 14:44:18
Post #4





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


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 ;]

Ten post edytował zegarek84 16.10.2012, 14:51:17


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post
Christy
post 16.10.2012, 20:36:29
Post #5





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 6.08.2007

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


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.
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: 12.06.2025 - 13:52