Image default
cURL Dersleri

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

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.

$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.

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.

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}

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.

Bir önceki yazım olan Php ile Yerel Haber Botu Yapmak | Haberler.com başlıklı makalemi de okumanızı öneririm.

İlgilizi Çekecek Konular

Php ile Tinyurl.com Servisini Kullanarak Link Kısaltmak

ibrahim Çevrük

Adobe Connect Api ile Oturum Açma

ibrahim Çevrük

cURL Dersine Giriş: cURL Parametreleri Açıklamaları

ibrahim Çevrük

Yorum Giriniz