[ vlada-kg @ 02.11.2011. 19:21 ] @
Da li moze neko da mi pomogne sa pronalazenjem source za slike na nekom web sajtu. Znam da skinem sliku i smestim je gde zelim, ali ne znam da napravim da program sam pronalazi linkove do slika, umesto ja rucno da radim. Da li to moze da se uradi uz pomoc PHP-a i kako?
[ dakipro @ 02.11.2011. 19:52 ] @
uglavnom moze da se uradi putem php-a, najverovatnije ti je najlakse koristeci regular expression. E sad, ako se link do slike kreira nakon prikaza stranice preko JS-a, to onda moze da bude malo problematicno.
[ vlada-kg @ 02.11.2011. 22:20 ] @
Probao sam regular expression, ali nikako da se snadjem ja sa onim. Jel mozes mozda da mi pokazes na nekom konkretnom modelu pa da ja probam posle da ga prilagodim svojim potrebama?
[ Zlatni_bg @ 02.11.2011. 23:32 ] @
Ukoliko poznajes PHP, evo ti dva korisna regular expressiona:


~<img([^>]+)>~i -> pronalazi img tagove u HTML kodu
~src=['"]([\w\.\-]+(\.gif¦\.jpe?g))['"]~i -> uzima src atribut, tacnije link do tvoje slike

Ukoliko ne poznajes, reci, objasnicu ti ukratko sta treba da radis :)
Lako mozes napraviti program da ti izbacuje linkove do svih slika. Ono sto bi ti mozda takodje pomoglo je automatsko cuvanje tih slika, cisto jedna ideja.
[ ivan.a @ 03.11.2011. 02:59 ] @
Pored regular expressiona možeš koristiti DOM


Code:
  $url = file_get_contents("http://website.com");
  $dom = new DOMDocument();
  @$dom->loadHTML($url);
  $xpath = new DOMXPath($dom);
  $entries = $xpath->query('//img');

foreach($entries as $e) {
echo $e->getAttribute("src");
}
[ vlada-kg @ 03.11.2011. 09:09 ] @
Probao sam DOM, ali mi on poskida linkove za sve slike, ne znam kako da ga namestim samo za odredjene.

Sto se tice:

Code:
~<img([^>]+)>~i -> pronalazi img tagove u HTML kodu
~src=['"]([\w\.\-]+(\.gif¦\.jpe?g))['"]~i -> uzima src atribut, tacnije link do tvoje slike


Uspeo sam nesto sa ovim, ali samo malo sam napredovao.

Da uzmemo npr. sledeci link kao primer: link

Link do glavne slike sam uspeo da skinem pomocu ovog koda (koji sam inace nasao na netu) :
Code:
$arr['poster'] = $this->match('/img_primary">.*?<img src="(.*?)".*?<\/td>/ms', $html, 1); 


E sad sam pokusao da uzmem slike glumaca i da ih ubacim u array, ali nisam uspeo. Probao sam na sledeci nacin:

Code:
                

$arr['slike'] = array();
        foreach($this->match_all('/primary_photo">.*?<img src="(.*?)".*?<\/td>/ms', $html, 1) as $m)  
        {
            array_push($arr['slike'], trim);
        }


Sto se tice kasnijeg automatskog cuvanja slika, to mi nije tesko. Znam da baratam sa podacima kad ih imam, samo ne znam da dodjem do njih. Prvi put sam sad koristio regular expression pa ne mogu bas najbolje da se snadjem.

Jel moze pomoc sa ovim?




[ ivan.a @ 03.11.2011. 11:03 ] @
Citat:
vlada-kg: Probao sam DOM, ali mi on poskida linkove za sve slike, ne znam kako da ga namestim samo za odredjene.


DOM primer:
Code:
 $entries = $xpath->query('//table/tr/td[@id="img_primary"]/a/img');

Dobijaš sliku iz tabele koja ima sledeće: <td id="img_primary">. Mnogo je lakše i preciznije nego regex, ako se ne varam.
[ vlada-kg @ 03.11.2011. 11:23 ] @
Da, sa ovim kodom dobijam sliku iz celije <td id="img_primary">. Ali ne mogu na isti nacin da dobijem sliku glumaca koji se nalaze u celiji <td id="primary_photo">, i da ih poredjam u array. Kako bi to uradio preko DOM-a? Zbog toga sam misli da je regex bolji.
[ ivan.a @ 03.11.2011. 11:33 ] @
Pa isto kao sa regex.

upit ti je dakle ...td[@id="img_primary"] itd.

$slike = array();
U petlji generišeš niz:
$slike[] = $e->getAttribute("src");
[ vlada-kg @ 03.11.2011. 11:38 ] @
Nece da radi, ili ja ne znam lepo da napisem. Da li si probao kod tebe da li radi?
[ ivan.a @ 03.11.2011. 11:59 ] @
Naravno da radi.

Ne treba ti src od slike glumaca pošto imdb koristi sistem za "učitavanje slika sa kašnjenjem" (prvo se učita dummy sličica) .
Treba ti "loadlate" atribut. Pogledaj source stranice i probaj linkove da bi znao koje elemente trebaš da uzimaš.

Zaboravih da ti napišem query:
Dakle...
$entries = $xpath->query('//table/tr/td[@class="primary_photo"]/a/img');
Petlja:
$img = $e->getAttribute('loadlate');
[ vlada-kg @ 03.11.2011. 12:33 ] @
Sad radi :). Ali opet imam problem. Zamisli ovakvu situaciju, ja na jednoj stranici unesem url u input field neke forme, i ta forma salje te podatke na obradu u stranicu proba.php. Tu upisem sledeci kod:
Code:
  $url = file_get_contents("http://www.imdb.com/title/tt0221027/");
  $dom = new DOMDocument();
  @$dom->loadHTML($url);
  $xpath = new DOMXPath($dom);
$entries = $xpath->query('//table/tr/td[@class="primary_photo"]/a/img');

foreach($entries as $e) {
echo $img = $e->getAttribute('loadlate');
}


E sad meni ne treba na toj stranici proba.php da mi izlista linkove, nego treba da mi vrati na prehtodnu u nekoj ovoj formi:

Slika1: link_prve_slike
Slika2: link_druge_slike
Slika3: itd...

Kako da vratim taj array? Probao sam da zamenim echo sa return ali ne funkcionise.
[ vlada-kg @ 03.11.2011. 13:10 ] @
Da ne verujes, snasao sam se :) . Hvala puno..pozz