Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Jak za pomocą PHP pobrać źródło strony stworzonej w AJAX
tomtheman
post 23.09.2011, 12:39:10
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 23.09.2011

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


Witam

Potrzebuję pobrać za pomocą skryptu PHP źródło strony, która jest napisana w AJAX-ie.
CURL i FILE_GET_CONTENTS nie zdają egzaminu, ponieważ pobierają źródło strony, które zostało wygenerowane przez serwer a ja chcę pobrać źródło tego co jest wyświetlane przez przeglądarkę.
Dla przykładu:

Dane, które otrzymuję po użyciu zarówno CURL jak i GET_FILE_CONTENTS wyglądają tak:

<td id="td_desertion"></td>

Natomiast wynik wyświetlany w przeglądarce wygląda tak:

<td>236</td>

i właśnie ten drugi próbuję bezskutecznie otrzymać.
Za wszelką pomoc będę wdzięczny.
Go to the top of the page
+Quote Post
Fifi209
post 23.09.2011, 13:20:24
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Jakiś firebug i zobacz jakie żądania lecą do serwera i je odtwórz w curlu


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
kaem
post 23.09.2011, 13:49:28
Post #3





Grupa: Zarejestrowani
Postów: 248
Pomógł: 38
Dołączył: 29.06.2008

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


Nie wiem czy to pomoże, ale weź pod uwagę, że przeglądarka wyświetla dane wygenerowane ( a raczej zwrócone) właśnie przez serwer. A potem już sama sobie 'mieli' css, js i wyświetla wynik, czyli wszystko po pobraniu danych od serwera dzieje się po stronie klienta(przeglądarki). Jeśli, np. w nagłówku strony jest bezwględny link do styli, to te style przy wyświetlaniu zostaną uwzględnione.
Go to the top of the page
+Quote Post
tomtheman
post 23.09.2011, 16:22:53
Post #4





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 23.09.2011

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


Jestem totalnie bezradny, więc podam co chcę zrobić.

mam taką stronkę:
http://clan.z8games.com/charstat_cf.aspx?usn=12093382

Tworzę statystyki i muszę pobrać dane ze strony. Wcześniej robiłem to bez problemu ale ostatnio admin strony przeszedł na ajaxa i się wszystko sypnęło.
Chodzi mi o to żeby wyciągnąć np. liczbę headshotów, która wyświetla się jako 8569 a w kodzie źródłowym jest jako id="td_headshots". Nie wiem jak ustanowić zapytanie żeby powiązać te dwie rzeczy w jedno i w wyniku otrzymać liczbę zamiast id.
Nie wiem kompletnie jak się do tego zabrać. Jak mnie ktoś naprowadzi to pewnie dalej już jakoś pójdzie.
Go to the top of the page
+Quote Post
!*!
post 23.09.2011, 17:52:32
Post #5





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Sprawdź do jakiego pliku odwołują się te żądania ajax (firebug w Fx, lub narzędzia developerskie opera,chrome) po czym pobierz dane dokładnie na tej samej zasadzie jak pobierałeś do tej pory.


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
tomtheman
post 26.09.2011, 12:17:31
Post #6





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 23.09.2011

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


Wysłany: Pon Wrz 26, 2011 12:15 pm Temat postu:

--------------------------------------------------------------------------------

Pobrałem dane, zdekodowałem ale w wyniku dostaję NULL, które według dokumentacji oznacza, że json nie może być zdekodowany lub gdy dane są głębiej niż limit rekurencji.
Czyli w tym przypadku oznacza to, że nie da się wyciągnąć danych czy trzyba użyć innego sposobu niż dekodowanie za pomocą json_decode?
Zrobiłem to tak:

  1. <?php
  2. $ch = curl_init();
  3. curl_setopt($ch, CURLOPT_URL, 'http://clan.z8games.com/clanServices.asmx/getPlayerPublicInfo');
  4. curl_setopt($ch, CURLOPT_POST, 1);
  5. curl_setopt($ch, CURLOPT_POSTFIELDS, '{"usn":12093382}');
  6. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  7. $odebranytekst = curl_exec($ch);
  8. curl_close($ch);
  9. $dane = json_decode($odebranytekst,true);
  10. $headshoty = $dane["d"]["headshotKillCnt"];
  11. echo $headshoty;
  12. ?>


Go to the top of the page
+Quote Post
nospor
post 26.09.2011, 12:37:10
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




jejkus.... zanim zabierzesz się za json, to sprawdź, czy link, który zapodajesz w ogóle działa.....
Wstaw swój link do przeglądarki i zobacz jak wygląda ten Twój "JSON"

Albo najlepiej zrób:
var_dump($odebranytekst);
Powód edycji: [nospor]:


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
tomtheman
post 26.09.2011, 12:48:50
Post #8





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 23.09.2011

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


Po potraktowaniu firebugiem wyszło, że POST-em muszę przekazać dane {"usn":12093382} na adres http://clan.z8games.com/clanServices.asmx/...layerPublicInfo, więc tak to właśnie zrobiłem.
jak zarzucę var_dumpa na $odebranytekst tak jak mówiłeś to w wyniku dostaję: string(217)"Object move to here", gdzie here przekierowuje na errora 404
Go to the top of the page
+Quote Post
nospor
post 26.09.2011, 12:52:06
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No, więc nic dziwnego, że odkodowanie JSON ci nie działa - od tak banalnych rzeczy trzeba zaczynać a nie szukać błędu nie wiadomo gdzie.

Pewnie na stronie jesteś zalogowany i ajax oczekuje od Ciebie zalogowania.
Zaś używając cURL się nie logujesz.

Może też być, że stronka sprawdza czy to ajax - musisz więc wysłać cURLem odpowiednie ajaxowe nagłówki.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
tomtheman
post 26.09.2011, 12:57:58
Post #10





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 23.09.2011

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


Używając firebuga nie byłem zalogowany, więc to chyba nie to. Dane, które probuję pobrać są ogólnie dostępne.
Co do ajaxowych nagłówków to szczerze mówiąc nie mam pojęcia o czym mówisz :/
Go to the top of the page
+Quote Post
nospor
post 26.09.2011, 13:01:45
Post #11





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Po pierwsze:
curl_setopt($ch, CURLOPT_POSTFIELDS, array('usn'=>12093382));
Nie wiem skądżeś swój sposób na postfields wynalazł.

Po drugie:
zapodaj linka do strony gdzie jest ten ajax, co trzeba kliknąć by ten ajax poszedł, to się sprawdzi resztę.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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: 30.06.2025 - 22:05