Как спарсить погоду с sinoptik и отправить через бота телеграмм

Узнаете как просто получить погоду по любому городу.И отправить данные в канал телеграмм бота или канал.С возможностю указания количества дней вывода

913 php, telegram Aвтор:
Рейтинг: 5/5 - 3 голосов

Как спарсить погоду с sinoptik и отправить через бота телеграмм

Телеграмм боты стали очень популярные. Сейчас можно встретить их в любых сферах от заказа такси, до банкинка — оплати услуг ,перевод денег .

Еще популярность их заслуживает тому, что api для написания ботов очень простое .Вот страница API на русском.

Я же покажу только часть, кода что отвечает за прием и вывод информации в канал .

Данные хранить в базе не будем, хочу просто показать принцип работы.


И так будем использовать phpQuery и Curl для парсера c siniptik.ua.

будем обрабатывать такую строку 

Функция curl_content() описана в статье о парсере с olx

if (strpos($text, '/wea') !== false) {
  $option = explode(" ", $text); // Разбивает строку с помощью разделителя $option[1]-Киев,$option[2] = число 3
  require ('api/phpQuery.php');  // библиотека
  $html=curl_content('https://sinoptik.ua/погода-'.$option[1].'/10-дней');// парсим все 10 дней 
  phpQuery::newDocument($html);
  $xbodycontent = pq('#blockDays > .tabs')->find('.main');
  $i=0;
  foreach ($xbodycontent as $res) {
    $pqres=pq($res);
    $day = $pqres->find('.day-link')->text();//день
    $date = $pqres->find('.date')->text();//дата
    $icon = $pqres->find('.weatherIco')->attr('title');//надпись на картинке
    $iconimg = $pqres->find('.weatherImg')->html();//надпись на картинке
    $temperature = $pqres->find('.temperature')->text();// Температура
    //проверяем что а погода чтобы определить какой смайлик отправить для визуализации
  if ($icon == 'Сплошная облачность, небольшой снег') {
    $emoji = hex2bin('F09F8CA809'); //hex2bin('f09f9880') //представление смайла https://apps.timwhitlock.info/emoji/tables/unicode
  }
  if ($icon == 'Сплошная облачность, сильный снег') {
    $emoji = hex2bin('F09F8CA809');
  }
   if ($icon == 'Сплошная облачность, снег') {
    $emoji = hex2bin('E29B84');
  }
  if ($icon == 'Сплошная облачность') {
    $emoji = hex2bin('E29881');
  }
  if ($icon == 'Облачно с прояснениями, мокрый снег') {
    $emoji =hex2bin('F09F8CA609');
  }
  if ($icon == 'Облачно с прояснениями') {
    $emoji =hex2bin('F09F8CA409');
  }
  if ($icon == 'Облачно с прояснениями, небольшой снег') {
    $emoji =hex2bin('E29D8409');
  }
 // оправляем в канал результат
    $content = ['chat_id' => $chat_id,
    'parse_mode'=>'Markdown',
    'text' => $day.$date.chr(10).$temperature.chr(10).$emoji.$icon
  ];
  requestToTelegram($content);


if(isset($option[2])? $num=$option[2] : $num=2);
  if(++$i == $num) break;//ограничение в $num выводов
  }
}

Теперь будем проверять как этот все работает в Телеграмме.

@PechenkiSiteBot

@PechenkiSiteBot
Название

Экспериментируйте и возможно именно вы сделаете что то стоящее 

3 случайных Поста

Card image cap
UTM метки Modx
Card image cap
Парсим данные из olx
Card image cap
Из растра в svg

коммент.

Контакти

Contact

info@pechenki.top

Начать чат со мной

© SiteBlog designer