Форум программистов, компьютерный форум, киберфорум
brain-4-me
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  

Парсинг погоды

Запись от brain-4-me размещена 25.03.2015 в 07:10
Показов 7341 Комментарии 4

Здравствуйте все) Продолжаю изучать php и тут наткнулся на интересное задание, сделать поле куда вводится город и кнопочка Инфо. Посылается запрос на сервер и возвращается в виде ответа табличка с текущей температурой и прогнозом погоды. Немного пошарившить в гугл решил парсить с яндекс погоды. Взял за исходник файл с названием и ID городов тут https://pogoda.yandex.ru/static/cities.xml. Вот, собственно что получилось:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?php header("Content-Type: text/html; charset=utf-8");?>
<!DOCTYPE HTML>
<html>
<head>
  <title>погода в любом городе</title>
  <meta charset="utf-8" />
</head>
<body>
<center><h3> Наберите название любого города</h3></center>
   <form method="post">
    <input type="text" name="city">
    <input type="submit" value="Информация!" name="submit">
    <?php 
    if (isset($_POST['submit'])){
      $search = $_POST['city'];
      $data_file = 'https://pogoda.yandex.ru/static/cities.xml'; // загружаем список городов
 $xml = simplexml_load_file($data_file);                            // читаем в массив
        $city = $xml->xpath("//city[text()='${search}']/@id"); //ищем по названию города его ID
        $country = $xml->xpath("//city[text()='${search}']/@country"); // ищем по названию страну
    ?>
  </form>
  <?php $city_id=$city['0']->id;
        $country=$country['0']->country;
    if ($city_id == TRUE){
   
    $weather_file= 'http://export.yandex.ru/weather-ng/forecasts/'.$city_id.'.xml'; //подставляем ID для запроса погоды
    $xml_weath=simplexml_load_file($weather_file);
      $now=$xml_weath->fact->temperature;                                                   //парсим текущую температуру
      $from=$xml_weath->day->day_part->temperature_from;                          // парсим проноз температуры от
      $to=$xml_weath->day->day_part->temperature_to;                                  // парсим прогноз температуры до
    }else{
      die("<center><h2>Вы ввели неправильное название города, или с маленькой буквы! Например Екатеринбург</h2></center>");                                                                // убиваем процесс если город был введен неверно
    }
}
  ?>
<div>
  <table border=1px>
    <tr>
      <th>Ваша Страна</th>
      <th>Ваш Город</th>
      <th>Текущая температура</th>
      <th>Проноз</th>
    </tr>
    <tr>
      <td><?php echo $country ?></td>        //выводим страну
      <td><?php echo $search ?></td>          // Город
      <td><?php echo $now ?></td>             // текущую температуру
      <td><?php echo "от $from до $to"?></td>    // прогноз
    </tr>
  </table>
</div>
</body>
</html>
будут вопросы спрашивайте, дошел до всего сам перелопатив дофига интернетов и книг) отвечу на любые, еще планирую добавить население города и валюту страны) как сделаю отпишусь

посмотреть можно тут тык
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 4
Комментарии
  1. Старый комментарий
    Вот хороший сервер с открытым API для погоды: http://www.worldweatheronline.com/api/
    Запись от 8Observer8 размещена 25.03.2015 в 10:24 8Observer8 на форуме
  2. Старый комментарий
    Аватар для brain-4-me
    Цитата Сообщение от 8Observer8
    Вот хороший сервер с открытым API для погоды: http://www.worldweatheronline.com/api/
    спасибо) погляжу) я только начинающий так что....
    Запись от brain-4-me размещена 25.03.2015 в 10:34 brain-4-me вне форума
  3. Старый комментарий
    я только начинающий так что....
    Там на панели слева много разных API. Я использовал "Local Weather API"

    Перейдите по ссылке

    Внизу страницы нажмите кнопку "FREE SIGNUP" для регистрации

    Вы попадёте на страницу, где нужно скопировать "key" - это длиное хэш-число. В меню сверху выберите "API explorer" -> "Free API" -> А на этой станице нужно вставить в поле "API Key" ваш скопированный "key"

    Теперь нажмите кнопку "GET", потом кнопку "Try it!" и вы получите ответ в виде Json (там можно получать ответы в разных форматах: JSON, XML, CSV, TAB)

    А вот здесь написано, как с помощью PHP работать Weather API
    Запись от 8Observer8 размещена 25.03.2015 в 12:30 8Observer8 на форуме
  4. Старый комментарий
    Аватар для brain-4-me
    Цитата Сообщение от 8Observer8
    Там на панели слева много разных API. Я использовал "Local Weather API"
    да я почитал все понял (благо хорошо знаю английский) ну у меня по тестировочному заданию обязательный парсинг Яндекс погоды)

    а может вы подскажите как спарсить можно из вики население данного города, и валюту?) (в большинстве будут использоваться только столицы)
    Запись от brain-4-me размещена 25.03.2015 в 13:37 brain-4-me вне форума
 
Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru