Google images api

Привет всем. Так уж сложилось, что мне нужно парсить результат поиска по Google Images.
Накопал у них апи, но не совсем понял, как использовать параметр 'start'.

Текущий код:

 function doGoogle($resultStorage, $query, $numImages) 
    {
 
        $i = $k = $n = 0;
        while(count($resultStorage) < $numImages)
        {
            $base_url = 'http://ajax.googleapis.com/ajax/services/search/images?v=1.0';
            $url = $base_url;
            if ($i == 0)
                $url .= '&imgsz=large&q='.urlencode($query).'&start=00';
            else
                $url .= '&imgsz=large&q='.urlencode($query).'&start='.$k.$n;
 
 
            $curl = curl_init();
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($curl, CURLOPT_URL, $url);
            $json = curl_exec($curl);
            curl_close($curl);
            $data = json_decode($json);
 
            echo '<div style="clear: both"></div>Page: <b>' . $i . '</b><br />Url: <b>' . $url . '</b><br />';
 
            foreach($data->responseData->results as $v)
            {
                // Если набрали нужное вол-во картинок - выходим
                if (count($resultStorage) == $num) break;
 
                // Помещаем очередной адрес картинки в массив
                array_push($resultStorage, $v->tbUrl);
 
                // Показываем картинку
                echo "<div style='float: left'><a href='{$v->unescapedUrl}'><img src='{$v->tbUrl}' /></a></div>";
            }
            $i++;
            $k+=2;
            $n++;
        }
    };


Я не уверен на счет использования переменных '$k; $n'.
Если так смотреть, то количество картинок для одного поискового запроса через апи ограничены, верно?
Сталкивался ли кто с этим. Как я понимаю, наверное. придется парсить вручную без апи.
  • Вопрос задан
  • 10834 просмотра
Решения вопроса 1
patashnik
@patashnik
У меня получилось запросить у Google не более 64 картинок. А параметр start — это всего лишь смещение (offset) при постраничном выводе картинок, т.к. за раз возвращает данные только по 4 картинкам.

http://ajax.googleapis.com/ajax/services/search/images?v=1.0&q=habrahabr&start=10

Выдаст 4 картинки, начиная с 10.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
ertaquo
@ertaquo
Существует параметр rsz, который указывает, сколько результатов поиска возвращать. По умолчанию он равен четырем, максимум — восемь:
ajax.googleapis.com/ajax/services/search/images?v=1.0&q=habrahabr&start=30&rsz=8
Кроме него, есть еще много других параметров, которые позволяют ограничить поиск (а значит, найти более целевые картинки).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы