Jak za pomocą PHP pobrać źródło strony stworzonej w AJAX

Odpowiedz Nowy wątek
2011-09-23 12:31
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:

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

236

i właśnie ten drugi próbuję bezskutecznie otrzymać.
Za wszelką pomoc będę wdzięczny.


Pozostało 580 znaków

2011-09-23 14:37
0

sprawdź jakimś frebugem czy czymś innym jakie żadanai wysyła strona i pod jaki adres, i curlem lub file_get_contents wyślij takie same i je odbierz, tylko pewnie będzie to czysty text bez html, ewentualnie będą w formie xml lub json, ale jeżeli ten przykład co podałeś jest prawdziwy to raczej to będzie czysty tekst ;)

Pozostało 580 znaków

2011-09-23 15:07
0

podaj adres strony jak już totalnie bedziesz bezradny


░█░█░█░█░█░█░█░█░█░█░█░

Pozostało 580 znaków

2011-09-23 17:17
tomtheman
0

Jestem totalnie bezradny, więc podam :)

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.

Pozostało 580 znaków

2011-09-23 19:00
0

Ja bym poszedł w kierunku czegoś w stylu http://search.cpan.org/~slann[...]0.06/lib/Mozilla/Mechanize.pm , może to perl, ale chyba rozumiesz o co mi chodzi (a jak nie, to chodzi mi o wykorzystanie silnika istniejącej przeglądarki do poradzenia sobie z AJAXem).

lol, WE NEED TO GO DEEPER! Skorzystajmy z maszyny wirtualnej i osobnego systemu żeby to zrobić - unikalna_nazwa 2011-09-24 09:28
Rzeczywiście, jak to podaje przez json, to trochę strzeliłem z armaty do wróbla. - Zjarek 2011-09-24 09:31

Pozostało 580 znaków

2011-09-23 20:02
0

Zjarek, przerzuciłeś się na heroinę? Po co embedować silnik przeglądarki żeby przeparsować JSON?! Asynchroniczne requesty na stronie przyjmują i zwracają dane w tym formacie.

http://pl.php.net/json_decode

Zapytanie:
{"usn":12093382}

Odpowiedź:
{"d":"{\"usn\":12093382,\"nick\":\"TomTheMad\",\"lev\":25,\"playCnt\":2684,\"winCnt\":1340,\"loseCnt\":1359,\"enemyKillCnt\":36117,\"deathCnt\":26803,\"exp\":273968,\"headshotKillCnt\":8569,\"friendKillCnt\":73,\"escapeCnt\":236,\"regDate\":\"2011\",\"lastPlayDate\":\"2011-09-22\",\"guildid\":2590,\"clanName\":\"PolishElite™\",\"memberType\":null,\"gcClanID\":54996}"}


Women were the reason I became a monk - and, ah, the reason I switched back...
edytowany 1x, ostatnio: Demonical Monk, 2011-09-23 20:06

Pozostało 580 znaków

2011-09-24 02:09
0

dokładnie tak jak napisał Demonical Monk:

wysyłasz POSTem takie dane:
{"usn":12093382} lub w php: json_encode(array("usn" => 12093382))
na adres
http://clan.z8games.com/clanServices.asmx/getPlayerPublicInfo

i odebrany tekst przetwarzasz tak:
$odebranytekst = ...; // tutaj dane odczytane curlem
$dane = json_decode($odebranytekst,true);
$headshoty = $dane["d"]["headshotKillCnt"];
nie jestem pewien czy tego $dane["d"] czasem nie trzeba drugi raz dekodować, a już późno i nie chce mi sie myslec.


░█░█░█░█░█░█░█░█░█░█░█░
edytowany 3x, ostatnio: krwq, 2011-09-24 02:17
Nie trzeba dekodować, dekodowane są wszystkie dane niezależnie od głębokości i można się do nich odwoływać jak do normalnej tablicy jeśli argument #2 damy na TRUE (czyli tak jak zrobiłeś). Normalnie powinno zdekodować do formy stdobjectów, która już taka wygodna nie jest, ale kto co lubi. - Demonical Monk 2011-09-24 10:14
ale te d wyglada jakby bylo zakodowane podwojnie - krwq 2011-09-24 10:47
lol, faktycznie (dopiero teraz zauważyłem cudzysłowy)... Ciekaw jestem co za inteligent tak to zaprojektował... - Demonical Monk 2011-09-24 10:49

Pozostało 580 znaków

2011-09-24 10:19
tomtheman
0

No właśnie największy problem sprawia mi to wysłanie danych "usn":12093382 na stronę http://clan.z8games.com/clanServices.asmx/getPlayerPublicInfo . Jak już to zrobię to z dalszą częścią powinienem już sobie poradzić.

Pozostało 580 znaków

2011-09-24 10:22
0
tomtheman napisał(a)

No właśnie największy problem sprawia mi to wysłanie danych "usn":12093382 na stronę http://clan.z8games.com/clanServices.asmx/getPlayerPublicInfo . Jak już to zrobię to z dalszą częścią powinienem już sobie poradzić.

Może pomóc też biblioteka cURL: http://pl2.php.net/curl
Tutoriali i przykładów użycia jest mnóstwo zarówno w komentarzach jak i w google.


Women were the reason I became a monk - and, ah, the reason I switched back...

Pozostało 580 znaków

2011-09-25 18:42
tomtheman
0

Próbuję coś wykombinować ale coś kiepsko mi idzie. Ciągle dostaję komunikat, że strona nie istnieje.
Pewnie złapiecie się za głowę, że ktoś mógł takie bzdury stworzyć.

$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, "http://clan.z8games.com/clanServices.asmx/getPlayerPublicInfo?usn=12093382");
$dane = curl_exec($ch);
$odebranytekst = json_decode($dane,true);
$headshoty = $dane["d"]["headshotKillCnt"];
echo $headshoty;
edytowany 1x, ostatnio: madmike, 2016-12-13 18:26

Pozostało 580 znaków

2011-09-25 18:47
0

Masz przesłać JSON, metodą POST. Ty robisz GETa po prostu...
Zresztą danych bodajże żadnych nie odbierzesz jeśli nie ustawisz opcji CURLOPT_RETURN_TRANSFER.
Odsyłam do przykładów w manualu PHP.


Women were the reason I became a monk - and, ah, the reason I switched back...

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0