Avatar billede wisemind Nybegynder
05. juli 2009 - 10:47 Der er 1 kommentar

Google Image Scraping Class - Tomt array

Kaere eksperter,

Jeg proeve at faa en google image scraping class til at virke, som skal returnerer links til billeder ud fra et givent soegeord.

Classen ser saaledes ud:


<?php

class GoogleImages
{   
    /**
    * getImages : Returns an array containing a thumbnail link, fullsize image link
    * and ALT text link for specified keyword
    *
    */
    function getImages($keyword)
    {
        $pics = array();

        $searchURL = 'http://images.google.com/images?svnum=10&um=1&hl=en&safe=off&q=';
        $searchURL .= urlencode($keyword) . '&btnG=Search+Images"';
       
        $results = file_get_contents($searchURL);
       
        preg_match_all('/dyn.Img.*?;/', $results, $string, PREG_SET_ORDER );

        $x=0;
       
        foreach($string as $img)
        {
            $image = explode(',', str_replace("\"",'',$img[0]));
           
              // Create array based on size
              if (count($image)==16)
                    {
                            $pics[$x][thumb] = $image[13] . '?q=tbn:' . $image[2] . $image[3];
                            $pics[$x][alt] = str_replace('...','',str_replace('\x3cb\x3e','',(str_replace('\x3c/b\x3e','',$image[6]))));
                            $pics[$x][link] = $image[4];
                    }
              if (count($image)==17)
                    {
                            $pics[$x][thumb] = $image[14] . '?q=tbn:' . $image[2] . $image[3];
                            $pics[$x][alt] = str_replace('...','',str_replace('\x3cb\x3e','',(str_replace('\x3c/b\x3e','',$image[6]))));
                            $pics[$x][link] = $image[3];
                    }
              if (count($image)==18)
                    {
                            $pics[$x][thumb] = $image[15] . '?q=tbn:' . $image[2] . $image[3];
                            $pics[$x][alt] = str_replace('...','',str_replace('\x3cb\x3e','',(str_replace('\x3c/b\x3e','',$image[6]))));
                            $pics[$x][link] = $image[3];
                    }
                    $x++;
        }
                shuffle($pics);
                return $pics;
    }
}
?>


Jeg proever derefter at kalde classen saaledes:

<?
$keyword = "coffee";
$search = new GoogleImages;
$pics = $search->getImages($keyword);
print_r($pics);
?>

Men hver gang returnerer den blot et tomt array.

Jeg maa indroemme jeg ikke er ekspert paa det her class/function omraade, saa vil saette pris paa hvis der var nogen der kan komme med en forklaring.

Paa forhaand tak!
Avatar billede repox Seniormester
06. juli 2009 - 11:40 #1
Det er fordi at linien:
preg_match_all('/dyn.Img.*?;/', $results, $string, PREG_SET_ORDER ); ingenting matcher.

Google Images er sikkert blevet ændret siden klassen her blev lavet.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester