cURL Dersleri

Php ile Hava Durumu Botu Hazırlama

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 resim çekilmekte,
+ 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="https://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.

Daha Fazla Göster

İlgili Makaleler

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Kapalı