Hoşgeldiniz
Okuma Moduna Geç
21 Ağustos 2017 - 12:25
PHP Hava Durumu Botu

Bu makalemizde PHP ile hava durumu botu hazırlamayı göreceğiz. Bot ile temel veriler olan bugünün kaç derece olduğu, havanın durumu, hissedilen sıcaklığı ve hangi saate ait veriler olduğunu göstereceğiz. Botu çok temel anlamda hazırladım ki istediğiniz gibi geliştirebilesiniz.

 

Hava durumu verilerini weather.com sitesinden alacağız.

1. Adım: Baglan() Fonksiyonumuz

Bu fonksiyonumuz bir web sitesine bağlanarak verileri çekmemize yardımcı olmaktadır.

function Baglan($url)
{
	$curl = curl_init();
	curl_setopt($curl, CURLOPT_URL, $url);
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]);
	$cikti = curl_exec($curl);
	curl_close($curl);
	return $cikti;
}

2. Adım: İl Kodu

Verileri alacağımız web sitesine bağlanırken kullanacağımız bir şehir kodu vardır. Bu şehir kodlarına buraya tıklayarak ulaşabilirsiniz.

  • Ankara: TUXX0002
  • İstanbul: TUXX0014
  • İzmir: TUXX0015
  • Bursa: TUXX0039
  • Eskişehir: TUXX0040
  • ...

Kod yapımızda ise bir $il değişkeni oluşturup kodu tanımlamalıyız;

$il = "TUXX0014";

3. Adım: Verileri Çekmek

Verileri temel halde çekmek için bu kodu kullanacağız;

$baglan = Baglan("https://weather.com/tr-TR/kisisel/bugun/l/".$il.":1:TU");
preg_match_all('#<p class="today_nowcard-timestamp">(.*?)</p>#si', $baglan, $saat);
preg_match_all('#<div class="today_nowcard-temp">(.*?)</div>#si', $baglan, $bugun);
preg_match_all('#<div class="today_nowcard-phrase">(.*?)</div>#si', $baglan, $durum);
preg_match_all('#<span class="deg-feels" className="deg-feels">(.*?)</span>#si', $baglan, $hissedilen);

4. Adım: Verileri İşlemek

Gelen verileri doğru değişkenlere ve doğru halleri ile aktarmak için kullanacağız;

$saat = explode(":", strip_tags($saat[0][0]));
$saat = substr($saat[0], -2).":".substr($saat[1], 0, 2);
$derece = intval(strip_tags($bugun[0][0]))."°";
$durum = strip_tags($durum[0][0]);
$hissedilen = intval(strip_tags($hissedilen[0][0]))."°";

Burada derece (°) ifadeleri bulunan $derece ve $hissedilen değişkenlerini intval içerisine almamın sebebi sizin onları derece (°) ifadesi eklemeden de kullanmak isteyebileceğiniz içindir. Yani bu kodda bu iki değişkenin sonuna ekstra olarak eklediğim derece (°) simgelerini çıkartırsanız sadece rakam olarak gelecektir.

Bundan sonraki aşama tamamen görüntü aşamasıdır. Artık verileri $saat, $derece, $durum ve $hissedilen olarak istediğiniz alana yazdırabilirsiniz.

Uygulama Demosu Uygulamanın Dökümanlarını İndir
Sponsorlu Bağlantı
İlk Yorumu Sen Bırak!
Bu konu hakkında henüz kimse görüş bildirmedi. İlk görüşü sen aktarmak ister misin?
Adınız ve Soyadınız
Mail Adresiniz
Mail adresinizi yalnızca yönetici görüntüleyebilir.
Web Siteniz
Yorumunuz
Yorumu Gönder