Задача:
Возникла задача поиска фраз в интернете. Решил поделиться результатами=)
Статей на тему HTTP-запросов достаточно, но ничего не нашел насчет работы с поисковыми системами.
Предыстория:
Подробнее об использовании GET и POST-запросов можно узнать ниже.
О протоколе HTTP можно узнать тут: https://ru.wikipedia.org/wiki/HTTP
Описание REST интерфейса в прикладных решениях: http://v8.1c.ru/o7/201312rest/index.htm
HTTP-сервисы в прикладных решениях: http://v8.1c.ru/o7/201312http/index.htm
Собственно сам код GET-запроса:
Если ТочноеСоответствие Тогда
ТочныйПоиск = "&wordforms=exact";
КонецЕсли;
Если ГдеИскать = "Yandex" Тогда
стрURL = "http://yandex.ru/search/?text=" + СокрЛП(ТекстПоиска) + "&lr=2" + ТочныйПоиск;
Иначе
Если ТочноеСоответствие Тогда
стрURL = "http://www.google.ru/#q=" + СокрЛП(ТекстПоиска) + "&newwindow=1&tbs=li:1";
Иначе
стрURL = "http://www.google.ru/#q=" + СокрЛП(ТекстПоиска) + "&newwindow=1&tbas=0";
КонецЕсли;
КонецЕсли;
//вычислить адрес сервера из адресной сторки
//пример АдресСервера: "yandex.ru"
АдресСервера1 = СтрЗаменить(стрURL, "http://" ,"");
ИндексСлеша = Найти(АдресСервера1, "/");
АдресСервера = Сред(АдресСервера1, 0 ,индексСлеша - 1);
//вычислить строку URL
//пример URL: "/search/?text=1C&lr=2&wordforms=exact""
ДлинаСтроки = СтрДлина(АдресСервера1);
URL = "/" + Прав(АдресСервера1, ДлинаСтроки - ИндексСлеша);
//установим заголовки соединения
//каждая страница требует индивидуального подхода
ЗаголовокGET = Новый Соответствие();
ЗаголовокGET.Вставить("GET " + URL + " HTTP/1.1");
//ЗаголовокGET.Вставить("Accept" , "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
//ЗаголовокGET.Вставить("Accept-Encoding" , "gzip, deflate, sdch");
//ЗаголовокGET.Вставить("Accept-Language" , "ru,en;q=0.8");
Попытка
//ВременныйФайл = ПолучитьИмяВременногоФайла("html");
ssl1 = Новый ЗащищенноеСоединениеOpenSSL(
Новый СертификатКлиентаWindows(СпособВыбораСертификатаWindows.Авто),
Новый СертификатыУдостоверяющихЦентровWindows());
HTTPСоединение = Новый HTTPСоединение(АдресСервера,,,,,,ssl1);
HTTPЗапрос = Новый HTTPЗапрос(URL, ЗаголовокGET);
//HTTPОтвет = HTTPСоединение.Получить(HTTPЗапрос, ВременныйФайл);
HTTPОтвет = HTTPСоединение.Получить(HTTPЗапрос);
КодСостояния = HTTPОтвет.КодСостояния;
ТекстОтвета = HTTPОтвет.ПолучитьТелоКакСтроку();
Исключение
Сообщить("Не удалось установить соединение с сервером :"
+ Символы.ПС + ИнформацияОбОшибке().Описание);
Возврат;
КонецПопытки; //
Если КодСостояния=200 Тогда
Если Найти(ТекстОтвета, "По вашему запросу ничего не нашлось")>0
ИЛИ Найти(ТекстОтвета, "ничего не найдено.")>0 Тогда
Сообщить("По вашему запросу ничего не нашлось.");
Иначе
Сообщить("Поиск дал результаты.");
КонецЕсли;
Иначе
Сообщить("Не удалось выполнить поисковый запрос.");
КонецЕсли;
Прикладываю обработку.