Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pobieranie zawartosci generowanej przez AJAX/JS z innej website
Forum PHP.pl > Forum > PHP
emvoo
Jako ze to moj pierwszy ever post na tym forum to chcialbym przywitac szanowne grono programistow php

Ja jestem a raczej pragne byc programista i ucze sie sumiennie kazdego dnia od jakiegos juz czasu a od kilku miesiecy PHP. We wrzesniu zaczynam studia w tym kierunku.

Ale do rzeczy.

Aktualnie buduje swoja pierwsza dosc powazna moim zdaniem stronke - porownywarke cen. Z wielu juz stron udaje mi sie bez problemu pobrac ceny ale pod warunkiem ze wszystkie ceny sa wyswietlane na stronie w momencie ladowania tychze stron. Problem jednak pojawia sie jesli produkt ma kilka opcji <select> (np kolory) i cena jest generowana onchange(); zaleznie od wybranej opcji. Cena ta generowana jest przez AJAX/JS zaleznie od strony z ktorej probuje pobierac dane.

Skrypt zaczynam od mojej funkcji cobynie pisac po 100 razy wink.gif

  1. function setNodes($my_url, $query){
  2. $html = file_get_contents($my_url);
  3. $dom = new DOMDocument;
  4. $dom->loadHTML($html);
  5. $xpath = new DOMXPath($dom);
  6. $nodes = $xpath->query($query);
  7. return $nodes;
  8. }


i pozniej pobieram wszystkie interesujace mnie dane przez roznego rodzaju loops.

Czego juz probowalem (niektore pomysly byly glupie po doczytaniu wink.gif )

  1. pobierac option values i echo javascript->loop aby select.value = value z php i select.onchange(); i to zmiania odpowiednia wartosc w consoli ale z mojego skryptu dostaje undefined variable z javascriptu
  2. rozniez za pomoca javascriptu generowalem cookies i probowalem je odczytywac z poziomu tego samego skryptu php ale jak sie okazuje php zdaje sie czyta to w momencie ladowania skryptu wiec cookies byly dostepne tylko podczas przeladowania skryptu heh
  3. gdzies w ramach poszukiwan rozwiazania mojego problemu wyczytalem i z chrome->inspect element -> Network -> XHR oraz z Live HTTP headers sprawdzilem co jest generowane i okazuje sie ze link GET //modules/paypal/express_checkout/ajax.php?get_qty=1&id_product=355&id_product_attribute=618&_=1436901427736 ale nie bylo juz dalej napisane co z nim zrobic oraz warto dodac ze link ten jest generowany (konkretnie get_qty, id_product, id_product_attribute i 1436901427736 sa rowniez generowane podczas onchange();


Wiec moje pytanie brzmi jak wymusic z poziomu php onchange() by zaladowac cene i ja odczytac lub tez co zrobic z powyzszym linkiem lub jakiekolwiek inne rozwiazanie bo nie mam juz pomyslow heh

Comandeer
ad. 3) obadaj co to generuje na czysto bez Ajaksa, bo być może po prostu zwróci to, o co Ci chodzi

AFAIK z poziomu PHP nie da się odpalać JS na wczytanej stronie. Potrzebowałbyś jakiegoś bota, który byłby w stanie interpretować i wykonywać JS (np. PhantomJS)
emvoo
Cytat(Comandeer @ 14.07.2015, 21:10:52 ) *
ad. 3) obadaj co to generuje na czysto bez Ajaksa, bo być może po prostu zwróci to, o co Ci chodzi


generuje po prostu 1

Cytat(Comandeer @ 14.07.2015, 21:10:52 ) *
AFAIK z poziomu PHP nie da się odpalać JS na wczytanej stronie.

Tak jak wspominalem niektore pomysly byly glupie lol


Cytat(Comandeer @ 14.07.2015, 21:10:52 ) *
Potrzebowałbyś jakiegoś bota, który byłby w stanie interpretować i wykonywać JS (np. PhantomJS)



niestety nie znam PhantomJS a i nie bardzo mam czas ani nie w moim zamierzeniu obczajac nowa technologie podczas gdy jednej (php) nie mam opanowanej tak jakbym chcial a zaraz na studiach zaczna sie zupelnie inne nowe rzeczy wiec jak mowilem nie bardzo mam na to czas. czy moge w takim razie prosic o podpowiedz jak tego dokonac wg twojego pomyslu?


Na szybko poczytalem na ich stronie i jesli sie nie myle mozna to pisac czystym JS (po dokladniejszym czytaniu jednak chyba nie do konca lol) ale co chcialbym wiec wiedziec jak te wartosci zwrocic do php? czy tez po prostu wrzucam "phantoma" w foreach czytajacego cene?

Ok poradzilem sobie z phantomem mam gotowy script ktory zwraca mi wartosci w konsoli ale gdy probuje

  1. $result = exec('/usr/bin/phantomjs phantomscript.js');
  2.  
  3. echo $result;


nic sie nie dzieje. stronka nawet nie "mysli" i nic nie zwraca. wszystko co przed i po powyzszym kodzie zostaje normalnie wywolane... Macie moze jakies pomysly?

edit

Spoko juz dziala - odwieczny problem byl z tym ze zawsze uzywalem XAMPP na localu a teraz na szybkosci zrobilem lamp stack i wydaje sie wszystko dzialac bez problemu.

Dzieki i pozdrawiam
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.