Php ile Hava Durumu Botu Yapmak | Meteoroloji.gov.tr

Neden bilmiyorum ama gene bir bot yapasım geldi. Sitede yer alan diğer botun sorun çıkartmasından dolayı da olacak ki gideyim hemen güzel bir bot hazırladım dedim. Botu biraz dinamik olarak hazırlayım dedim ama üşendim. Bilgileri sorunsuz bir şekilde çekiyor zaten istediğiniz gibi kullanabilirsiniz.

Hangi ile ait bilgileri çekmesini istiyorsanız o zaman il değişkenini o ilin adını yazmanız gerekmektedir. Tabi bunu yaparken Türkçe karakter kullanmamanız gerekmektedir.

Botun Özellikleri;
+ Hava durumuna ait resmi çekmektedir,
+ Hava durumu sıcaklık değerini almaktadır,
+ Hava durumu bilgisini son güncellenme zamanını almaktadır.

Bot yukarıda yazan 3 bilgiyi çekmektedir. Şimdi bot hakkında bilgileri verdikten sonra kodlamaların nasıl olduğunu görelim;

İlk öce her botta kullandığımız bağlantı fonksiyonunu yazalım

<?php
Function Baglan($link){
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$link);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_REFERER,"http://www.yandex.com.tr");
curl_setopt($ch, CURLOPT_TIMEOUT, 9999999);
$Curl = curl_exec($ch);
curl_close($ch);
return $Curl;
}
?>

Yukarıdaki gibi bağlantımızı oluşturduğumuza göre şimdi hangi ile ait verilerin çekileceğini belirteceğimiz değişkenimizi oluşturalım artından da bağlanacağımız siteye entegre edip yazalım.

<?php
$il = "ankara";
$Site = Baglan("http://www.mgm.gov.tr/tahmin/il-ve-ilceler.aspx?m=".$il."");
?>

Şimdi bağlanacağımız siteyi ve verilerini istediğimiz ilin değerini aldıktan sonra şimdi sıcaklık, resim ve tarih gibi bilgilerin olduğu alanları alıp regex desenini yazıp bilgileri preg_match ile çekelim.

<?php
preg_match('@<td id="sondrm" class="sond_zaman">(.*?)<br .>(.*?)</td>@si',$Site,$Tarih);
preg_match('@<td><em class="renkMax">(.*?)</em></td>@si',$Site,$Sicaklik);
preg_match('@<h1 id="sfB" style="clear:both;">(.*?)<strong>(.*?)</strong></h1>@si',$Site,$ill);
preg_match('@<td title = ".*?" rowspan="2"><img src="../FILES/imgIcon/(.*?)" alt=".*?" /> </td>@si',$Site,$Resim);
?>

İstediğimiz verileri almak için kodlarımızı da yukarıdaki gibi yazmış olduk. Şimdi bir html yapısı oluşturalım ve bu gelen bilgileri yazdıralım.

<div id="Kutu">
   <div class="iladi"><?=$ill[2]?></div>
   <img src="http://www.mgm.gov.tr/FILES/imgIcon/<?=$Resim[1]?>" alt=""/>
   <div class="serit"><?=$Sicaklik[1]?></div>
   <div class="serit"><?=$Tarih[1]?></div>
   <div class="serit"><?=$Tarih[2]?></div>
</div>

Bu html yapımızı biraz görsellik katarak düzenleyelim daha bir albenisi olacak şekilde ayarlayalım.

<style type="text/css">
body{font:14px/21px Arial;color:#666}
#Kutu{border:1px solid #ccc;width:100px}
#Kutu img {margin-left:auto;margin-right:auto;display:block}
.iladi{background-color:#eee;height:21px;text-align:center}
.serit{background-color:#eee;text-align:center;margin-bottom:1px}
</style>

Yukarıdaki adımları sırası ile yaptıktan sonra botumuz hazır bir hal alacaktır. Çekilen verilerde Türkçe karakter sorunu yaşıyorsanız sayfanızın başına şu aşağıdaki kodu yazmanız yeterli olacaktır.

<meta http-equiv="content-type" content="text/html; charset=utf-8" />

Tamam! Sanırım akıllarda bir işaret bırakmayacak şekilde botumuzu hazırlamış olduk. Bilgiler meteoroloji sitesinden çekildiği için sorunsuz bir biçimde veriler gelmektedir.
EK DOSYA YOK
DEMOYU GÖRÜNTÜLE (297)
- 28.09.2013 / 22:30:48 2

Sosyal Medya Paylaşım Alanı

Bunlarda İlginizi Çekebilir

6:35 Php Dersleri

String İfadeleri Eş Parçalara Bölmek | str_split();

Kategori: Php Dersleri | 04.05.2013
Web Tasarımları

Sevgiliye Site İndex Tasarımı [ Html&jQuery ]

Kategori: Web Tasarımları | 03.05.2013
Php Dersleri

Heredoc ile Tırnak Problemlerine Çözüm Buluyoruz

Kategori: Php Dersleri | 29.07.2015
Php Dersleri
Seo(.htaccess)

Robots.txt Nedir? Ne işe yarar? Nasıl Oluşturulur?

Kategori: Seo(.htaccess) | 14.05.2013

Yorum Listesi (4) # YorumYap

  • umut (24.10.2015 - 10:32:13)
    Hocam Bu Kodların çok işime yaradı çok teşekkür ederim kodlara ip adresi belirtme kodu koydum sonrada kendim bir http://ip-api.com/php/ buna benzerde kod yaptım :) çok güzel oldu sadece tek yerden veri çekiyor :) ortamatik yaptım birde havayı metin olarak gösterdim sen oolmasan bunları yapamazdım hocam çok saol
  • Murat (17.09.2016 - 10:53:46)
    Maalesef artik kodlar calismiyor. demo da hata veriyor
  • Volkan (10.12.2016 - 04:39:52)
    Artık mgm'den veri çekmek pek mümkün değil gibi... İbrahim çevrük'ten yeni bot bekliyoruz...
  • Yusuf (28.12.2016 - 21:00:38)
    Merhabalar, ne yazık ki çalışmıyor. Güncelleme rica edebilir miyiz?

Hadi Sende Yorum Yap!

Yorum Gönderilmiştir. Onaylandıktan Sonra Mesajınız Yayınlanacaktır.