Наш запрос: 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





Можно использовать что-нибудь вот такое для обработки результата:
{«responseData»: null, «responseDetails»: «This API is no longer available.», «responseStatus»: 403}
Этот API не больше не доступен.
печаль
(0) А что сейчас вместо этого API?