HelpF.pro

Получаем курс валют с сайта банка (HTML)

Для полного понимания происходящего смотрите исходный код вэб-страницы. Подобным примитивным образом можно получить любую информацию, опираясь на значения id и class html блоков.

Из этого фрагмента страницы будем получать значения:

fragment


Код 1C v 8.х
 
Процедура КнопкаВыполнитьНажатие(Кнопка)

	//Сохраняем нужную страницу для дальнейшей работы
	Сервер = "kkb.kz";
	Адрес = "/";
	ИмяВходящегоФайла = КаталогВременныхФайлов() + "rate.html";
	НТТР = Новый HTTPСоединение(Сервер);
	НТТР.Получить(Адрес, ИмяВходящегоФайла);
	ВходящийФайл = Новый Файл(ИмяВходящегоФайла);
	
	//Получаем текст страницы
	Текст = Новый ТекстовыйДокумент; 
	Текст.Прочитать(ИмяВходящегоФайла);
	Содержимое = Текст.ПолучитьТекст();
	
	//Получаем дату курса
	НачалоБлокаСДатой = "<div class=" + """" + "w100fl" + """" + " id=" + """" + "kurs" + """" + ">";
	КонецБлокаСДатой = "<div class=" + """" + "tbl_menu" + """" + " id=" + """" + "tbl_menu" + """" +">";
	БлокСДатой = Сред(Содержимое, Найти(Содержимое, НачалоБлокаСДатой) + СтрДлина(НачалоБлокаСДатой), Найти(Содержимое, КонецБлокаСДатой) - Найти(Содержимое, НачалоБлокаСДатой) - СтрДлина(НачалоБлокаСДатой));
	НачалоБлокаСДатой = "<nobr>";
	КонецБлокаСДатой = "</nobr>";
	Дата = Дата(Сред(БлокСДатой, Найти(БлокСДатой, НачалоБлокаСДатой) + СтрДлина(НачалоБлокаСДатой), Найти(БлокСДатой, КонецБлокаСДатой) - Найти(БлокСДатой, НачалоБлокаСДатой) - СтрДлина(НачалоБлокаСДатой)) + ":00");
	
	//Выделяем блок, где содержится информация о курсах
	НачалоТекста = Найти(Содержимое, "<" + "div id=" + """" + "div_sub1" + """" + ">");
	КонецТекста = Найти(Содержимое, "<" + "div id=" + """" + "div_sub2" + """");
	БлокКурса = Сред(Содержимое, НачалоТекста, КонецТекста - НачалоТекста);
	
	//Получаем курс (в нашем случае функции можем передать ещё значения "EUR" и "RUB")
	Курс = ПолучитьКурсВалюты("USD", БлокКурса);
	Покупка = Курс[0];
	Продажа = Курс[1];
	

КонецПроцедуры

Функция ПолучитьКурсВалюты(Валюта, БлокКурса)
	
	БлокКурса = СтрЗаменить(БлокКурса, Символы.ПС, "");
	БлокКурса = СтрЗаменить(БлокКурса, " ", "");
	СтрокаНачала = "<td><strong>" + Валюта + "</strong></td>";
	НачалоБлокаВалюты = Найти(БлокКурса, СтрокаНачала);
	ОстатокБлока = Сред(БлокКурса, НачалоБлокаВалюты + СтрДлина(СтрокаНачала), СтрДлина(БлокКурса) - НачалоБлокаВалюты);
	КонецБлокаПокупки = Найти(ОстатокБлока, "</td>") - 1;
	ЦенаПокупки = Число(СтрЗаменить(Сред(ОстатокБлока, 1, КонецБлокаПокупки), "<td>", ""));
	ОстатокБлока = Сред(ОстатокБлока, КонецБлокаПокупки + 6, СтрДлина(ОстатокБлока) - КонецБлокаПокупки + 6);
	КонецБлокаПродажи = Найти(ОстатокБлока, "</td>") - 1;
	ЦенаПродажи = Число(СтрЗаменить(Сред(ОстатокБлока, 1, КонецБлокаПродажи), "<td>", ""));
	
	Массив = Новый Массив;
	Массив.Добавить(ЦенаПокупки);
	Массив.Добавить(ЦенаПродажи);
	
	Возврат Массив;
	
КонецФункции
   

Опубликовано на сайте: https://HelpF.pro
Прямая ссылка: https://HelpF.pro/faq/view/1116.html