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'.
Если так смотреть, то количество картинок для одного поискового запроса через апи ограничены, верно?
Сталкивался ли кто с этим. Как я понимаю, наверное. придется парсить вручную без апи.
  • Вопрос задан
  • 10763 просмотра
Решения вопроса 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
Кроме него, есть еще много других параметров, которые позволяют ограничить поиск (а значит, найти более целевые картинки).
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы