Наш запрос: http://ajax.googleapis.com/ajax/services/search/images?v=1.0&rsz=2&imgsz=large&q=water&start=0
Я не буду подробно описывать все параметры, их вы можете изучить самостоятельно.
Опишу только те параметры, которые используются в запросе:
v — версия протокола, сейчас доступна только «1.0»;
rsz — количество возвращаемых изображений;
imgsz — размер изображений;
q — это слово, которое мы ищем;
start — начальное значение результата запроса (например, если мы хотим пропустить первые 2 изображения, то значение должно быть равно «3» — то есть, начинать с третьего изображения).
В результате нашего запроса мы получаем вот такой ответ:
{"responseData": { "results":[ { "GsearchResultClass":"GimageSearch", "width":"825", "height":"529", "imageId":"ANd9GcRm5Y-v8pql1b14azVHUPbYDvz5Rf2d0gxT00C-LyC6hXI72Oldvz7bYeY", "tbWidth":"144", "tbHeight":"92", "unescapedUrl":"http://www.cleanwateraction.org/files/images/ca/Front%20image_drinking-water.jpg", "url":"http://www.cleanwateraction.org/files/images/ca/Front%2520image_drinking-water.jpg", "visibleUrl":"www.cleanwateraction.org", "title":"Protecting Drinking u003cbu003eWateru003c/bu003e | Clean u003cbu003eWateru003c/bu003e Action", "titleNoFormatting":"Protecting Drinking Water | Clean Water Action", "originalContextUrl":"http://www.cleanwateraction.org/programinitiative/protecting-drinking-water-0", "content":"cup of u003cbu003ewateru003c/bu003e", "contentNoFormatting":"cup of water", "tbUrl":"http://t1.gstatic.com/images?qu003dtbn:ANd9GcRm5Y-v8pql1b14azVHUPbYDvz5Rf2d0gxT00C-LyC6hXI72Oldvz7bYeY" }, { "GsearchResultClass":"GimageSearch", "width":"550", "height":"339", "imageId":"ANd9GcTrB2HrLPag0WEBqAbho5jLbAPtgTBK7AzYDpqf4gOysga_34oFpTY1Gz2_", "tbWidth":"133", "tbHeight":"82", "unescapedUrl":"http://www.fengshuiweb.co.uk/wp-content/uploads/2013/03/Water-Rat-Feng-Shui.jpg", "url":"http://www.fengshuiweb.co.uk/wp-content/uploads/2013/03/Water-Rat-Feng-Shui.jpg", "visibleUrl":"www.fengshuiweb.co.uk", "title":"Characteristics of the u003cbu003eWateru003c/bu003e Rooster", "titleNoFormatting":"Characteristics of the Water Rooster", "originalContextUrl":"http://www.fengshuiweb.co.uk/animals/waterrooster.htm", "content":"Characteristics of the u003cbu003eWateru003c/bu003e", "contentNoFormatting":"Characteristics of the Water", "tbUrl":"http://t2.gstatic.com/images?qu003dtbn:ANd9GcTrB2HrLPag0WEBqAbho5jLbAPtgTBK7AzYDpqf4gOysga_34oFpTY1Gz2_" } ], "cursor":{ "resultCount":"235,000,000", "pages":[ { "start":"0", "label":1 }, { "start":"2", "label":2 }, { "start":"4", "label":3 }, { "start":"6", "label":4 }, { "start":"8", "label":5 }, { "start":"10", "label":6 }, { "start":"12", "label":7 }, { "start":"14", "label":8 } ], "estimatedResultCount":"235000000", "currentPageIndex":0, "moreResultsUrl":"http://www.google.com/images?oeu003dutf8u0026ieu003dutf8u0026sourceu003dudsu0026startu003d0u0026imgszu003dlargeu0026hlu003denu0026qu003dwater", "searchResultTime":"0.07" } }, "responseDetails": null, "responseStatus": 200}
С этим ответом и предстоит работать. Не буду подробно описывать, что происходит в коде 1С, там есть комментарии. Вот код обработки:
Процедура КнопкаВыполнитьНажатие(Кнопка) // С параметрами запроса можно ознакомиться тут: https://developers.google.com/image-search/v1/jsondevguide?hl=ru РезультатЗапроса = ПолучитьИмяВременногоФайла("txt"); КоличествоИзображений = 2; // Запрашиваем два изображения // Получаем страницу http://ajax.googleapis.com/ajax/services/search/images?v=1.0&rsz=2&imgsz=large&q=water&start=0 Хост = "ajax.googleapis.com"; Запрос = "/ajax/services/search/images?v=1.0&rsz=" + КоличествоИзображений + "&imgsz=large&q=water&start=0"; Попытка Соединение = Новый HTTPСоединение(Хост); Соединение.Получить(Запрос, РезультатЗапроса); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; // Получаем текст результата запроса Файл = Новый ТекстовыйДокумент; Попытка Файл.Прочитать(РезультатЗапроса, КодировкаТекста.Системная); Текст = Файл.ПолучитьТекст(); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; // Обрабатываем результат запроса НачалоМассиваДанныхИзображений = Найти(Текст, "[") + 1; КонецМассиваДанныхИзображений = Найти(Сред(Текст, НачалоМассиваДанныхИзображений, СтрДлина(Текст)), "]") - 1; МассивДанныхИзображений = Сред(Текст, НачалоМассиваДанныхИзображений, КонецМассиваДанныхИзображений); // В переменной МассивДанныхИзображений хранится массив изображений с их параметрами: {"p1":"value","pn":"value"},{"p1":"value","pn":"value"} // Обрабатываем массив Для Н = 1 По КоличествоИзображений Цикл Сообщить("Изображение " + Строка(Н)); НаборПараметровМассива = Сред(МассивДанныхИзображений, 2, Найти(МассивДанныхИзображений, "}") - 2); // Без {} МассивДанныхИзображений = Сред(МассивДанныхИзображений, Найти(МассивДанныхИзображений, "}") + 2, СтрДлина(МассивДанныхИзображений)); // Исключаем текущий элемент массива Если Н = 1 Тогда // Подразумеваем, что количество параметров будет одинаковым, поэтому один раз узнать их количество будет достаточно НаборПараметровДляВычисленияКоличества = НаборПараметровМассива; КоличествоПараметров = ПолучитьКоличествоПараметров(НаборПараметровДляВычисленияКоличества, СтрДлина(НаборПараметровМассива), ","); КонецЕсли; НаборПараметровДляВычисленияЗначений = НаборПараметровМассива; Для НН = 1 По КоличествоПараметров Цикл ПозицияРазделителя = Найти(НаборПараметровДляВычисленияЗначений, ","); ПараметрЗначение = Сред(НаборПараметровДляВычисленияЗначений, 1, ПозицияРазделителя - 1); Параметр = СтрЗаменить(Сред(ПараметрЗначение, 1, Найти(ПараметрЗначение, ":") - 1), """", ""); Значение = СтрЗаменить(Сред(ПараметрЗначение, Найти(ПараметрЗначение, ":") + 1, СтрДлина(ПараметрЗначение)), """", ""); Сообщить(Параметр + " / " + Значение); НаборПараметровДляВычисленияЗначений = Сред(НаборПараметровДляВычисленияЗначений, ПозицияРазделителя + 1, СтрДлина(НаборПараметровДляВычисленияЗначений)); // Исключаем текущую пару параметр/значение КонецЦикла; КонецЦикла; КонецПроцедуры Функция ПолучитьКоличествоПараметров(Стр, КонецСтроки, Разделитель) КоличествоПараметров = 0; Для Н = 1 По КонецСтроки Цикл ПозицияРазделителя = Найти(Стр, Разделитель); Если ПозицияРазделителя <> 0 Тогда КоличествоПараметров = КоличествоПараметров + 1; КонецЕсли; Стр = Сред(Стр, ПозицияРазделителя + 1, КонецСтроки); КонецЦикла; Возврат КоличествоПараметров + 1; КонецФункции
Обработка разберет параметры изображений и их значения. Параметры самого запроса здесь не обрабатываются.
В результате можно получить, например, вот что: http://youtu.be/BwvNrmm-q7c
Можно использовать что-нибудь вот такое для обработки результата:http://infostart.ru/public/119601/
{«responseData»: null, «responseDetails»: «This API is no longer available.», «responseStatus»: 403}
Этот API не больше не доступен.
печаль
(0) А что сейчас вместо этого API?