• Что бы вступить в ряды "Принятый кодер" Вам нужно:
    Написать 10 полезных сообщений или тем и Получить 10 симпатий.
    Для того кто не хочет терять время,может пожертвовать средства для поддержки сервеса, и вступить в ряды VIP на месяц, дополнительная информация в лс.

  • Пользаватели которые будут спамить, уходят в бан без предупреждения. Спам сообщения определяется администрацией и модератором.

  • Гость, Что бы Вы хотели увидеть на нашем Форуме? Изложить свои идеи и пожелания по улучшению форума Вы можете поделиться с нами здесь. ----> Перейдите сюда
  • Все пользователи не прошедшие проверку электронной почты будут заблокированы. Все вопросы с разблокировкой обращайтесь по адресу электронной почте : info@guardianelinks.com . Не пришло сообщение о проверке или о сбросе также сообщите нам.

Получение Данных Сайта Средствами Delphi

Sascha Оффлайн

Sascha

Заместитель Администратора
Команда форума
Администратор
Регистрация
9 Май 2015
Сообщения
1,562
Баллы
155
1.png

Часто мы сталкиваемся с ситуациями, когда в программе используются не статические данные, а постоянно изменяющиеся. Откуда взять эту информацию?- спросите вы. Конечно же из сети! Но тут встает вопрос:"Как достать данные с сайта?". Вы открываете вожделенную страничку и видите на ней нужную информацию, но как получить ее для своей программы - не знаете.

Мы рассмотрим этот вопрос на простейшем примере получения данных о температуре г.Москва с "Яндекс погоды".

Для начала нам нужно получить html код страницы(благо Delphi позволяет), и сделаем мы это с помощью компонентов:1.button 2.idHTTP(indyclients) 3.memo
Свойство Handleredirects компонента idHTTP нужно перевести в положение true. Далее, напишем код для кнопки:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Lines.Add((IdHTTP1.get('http://pogoda.yandex.ru/moscow?ncrnd=7940')));//записываем html в мемо для дальнейшей работы
end;
В memo вы увидите бесконечное число строчек, найти в котором нужную информацию очень сложно, поэтому далее мы идем в браузер.
Открываем наш сайт

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

, тыкаем правой кнопкой мыши на погоду сейчас "0°C"(нужную нам информацию) и выбираем "Просмотр кода элемента".
2.png
Далее видим строчку кода, содержащую нужные для нас 0°C:
3.png
<div class="b-thermometer__now"> - эту часть копируем в буфер обмена, так как именно ее мы и будем искать в memo для извлечения информации.

"Необходимый кусок кода" найден, возвращаемся к нашей программе.

Кидаем на форму еще одну кнопку и компонент Label(в него выведем температуру). Код новой кнопки:
Код:
procedure TForm1.Button2Click(Sender: TObject);
var tag,tnow,Cels:integer;//переменные для поиска
wether:string;//переменная в которой будет содержаться строка с температурой
begin
Tag:=Pos('<div class="b-thermometer__now">', Memo1.Text);//ищем вхождение строки с температурой в нашем memo
  if Tag>0 then wether:=Copy(Memo1.Text,Tag,40);//копируем строку <div class="b-thermometer__now">0 °C</div> в переменную
  tnow:=pos('>',wether);//этими двумя строками мы определяем с какого по какой символ переменной
  cels:=pos('°C',wether);//копировать погоду. От знака '>' до "°C"
if tnow>0 then label1.caption:=copy(wether,tnow+1,cels-tnow+1);//копируем данные из нашей переменной
end;
Если вы все сделали правильно, то в label будет выведена текущая погода г.Москва. Я разобрал простейший пример, а дальше... А дальше только ваша безграничная фантазия и любовь к программированию направят вас. Удачи!
 
Вверх Снизу