Uzak Sunucudan Veri Çekme - Örneklerle / Turkish Tutorial

in #utopian-io7 years ago (edited)

Neler Öğreneceğim?

  • Kaynağa erişim
  • Veri Parçalama

Gereksinimler

  • PHP

Zorluk Derecesi

  • Intermediate

İçerik

Merhaba arkadaşlar ben Seyda Bozkurt yaklaşık 3-4 yıldır php ile uğraşıyorum ve sürekli bir şeyler üretmeye çalışıyorum bu gün sizlerle php bilen birinin kesinlikle öğrenmesi gereken ve kesinlikle işine yarayacak olan bir şeyi anlatacağım. uzak sunucudan veri çekme. peki bu uzak sunucudan veri çekme nedir ne işe yarar? hava durumu, saat bilgileri, borsa ve aklınıza gelebilecek bir çok sabit ve değişken veriyi sitenizde yer almasını sağlaya bilirsiniz. dikkatli olun ama zahmetli ve çaba gösterilmiş içeriklerin sitenize çekmeniz yasal değildir ve kaynak belirtmeniz gerekir. bir nevi bu bir bot yapımı başka bir siteden bilgileri sitenize çekebilirsiniz hatta sitenize kayıt bile edebilirsiniz.

ilk olarak kaynağa nasıl erişecez onunla başlayalım . uzak sunucudan veri almak için PHP çekirdek fonksiyonu olan file_get_contents() den faydalanacağız. bu fonksiyon bir den çok işe yarasada bizler genellikle veri çekme için kullanıyoruz. fonksiyonda belirtilen URL ye erişip sadece HTML bilgileri döndürür. aşağıdaki örnek kodda www.mgm.gov.tr sayfası üzerinden SAKARYA ili için günlük hava tahmin sonuçları bulunuyor.

<?php 
header('content-type:text/html;charset=utf-8');
$url = 'https://www.mgm.gov.tr/tahmin/il-ve-ilceler.aspx?m=SAKARYA#/';
$kaynak = file_get_contents($url);
highlight_string($kaynak);
?>

bu örnekte $url değişkenine erişip HTML kodlarını $kaynak adlı değişkene yüklüyo ve daha sonra ekran görüntüsü almak içinde highlight_string() kullanılıyor.
1.png

İstediğimiz bilgiyi elde etme ve parçalama yapacağız şimdi peki bu işlemleri nasıl yapacağız?
iki şekilde parçalaya biliriz ilki explode() veya split() bunlar aynı görev için kullanılır.

<?php
$metin = "1,2,3,4,5";
$cikti = explode(",", $metin);
echo "<pre>";
print_r($cikti);
echo "</pre>";
?>

aşağıdaki görselde kodların çıktısını görüyorsunuz yukarı kodlar tek tek ayrılıp yeni bir listeye atılıyor. yukarıda kodları beraber inceleyelim. ilk önce metin diye bir string belirlemiş ve 1den 5 e kadar arasına virgül koyarak yazdık. ikinci satırda iste metin değişkenini explode ile parçaladık. ilk parametreye bakarsanız "," (virgül) parametresi ile parçalanıyor bu şekilde de hepsi yeni bir listeye atıyor. üçüncü satırda ise < pre> ile ayrıştırıcı yazdırma işlemi başlıyor üçüncü satırda ayrıştırılmış şekilde yazılıyor ve 4. satırda ayrıştırıcı yazdırma kapatılıyor.

2.png
örnek uygulama ile pekiştirelim.

', $kaynak); $imsaksaat = explode('' ,$imsakhtml[1]); $oglehtml = explode('', $kaynak); $oglesaat = explode('' ,$oglehtml[1]); $ikindihtml = explode('', $kaynak); $ikindisaat = explode('' ,$ikindihtml[1]); $aksamhtml = explode('', $kaynak); $aksamsaat = explode('' ,$aksamhtml[1]); $yatsihtml = explode('', $kaynak); $yatsisaat = explode('' ,$yatsihtml[1]); echo 'imsak : '.$imsaksaat[0]. '
'; echo 'ogle : '.$oglesaat[0]. '
'; echo 'ikindi : '.$ikindisaat[0].'
'; echo 'aksam : '.$aksamsaat[0].'
'; echo 'yatsi : '.$yatsisaat[0].'
';?>

3.png

evet arkadaşlar burada namaz vakitleri ile alakalı bir proje yaptık. bu proje kodlarını incelerseniz gayet açık bir şekilde mantığı var ilk olarak namazvakti.com adlı siteden şehrini seçtiğimiz konumun namaz vakitlerini erişe biliyoruz ben örnek olarak sakarya yaptım. daha sonra ise explode ile < td> nin içindeki belirli parametreleri (imsak,ogle,ikindi,aksam,yatsi) olarak bölüyorum. birinci explode de 1 diziyi çekiyorum ve yeni değişkene atıyorum yazdırırkende o değişkenin 0. dizesini çekip yazdırıyorum ve orada bize saat i vermiş oluyor. gayet güzel bir uygulama olduğunu düşünüyorum kolay bir şekilde anlaya bileceğinizi ümit ediyorum aşağıda da bütün örneklerin kodlarını github dan paylaşıyorum linki bıraktım aşağıya :) iyi günler

Github - https://github.com/kansiper/Php-ile-Uzaktan-Veri-Cekme-Ornekleri



Posted on Utopian.io - Rewarding Open Source Contributors

Sort:  

Hey @arie.steem, I just gave you a tip for your hard work on moderation. Upvote this comment to support the utopian moderators and increase your future rewards!

Thank you for the contribution. It has been approved.

Important Note: Your text is mostly informal and your grammar is not good. I approve this because its quality is good. But this is exceptional. If you keep posting informal posts with bad grammar, they won't be approved.

Also, if you edit this post and make it more formal with good grammar, I would appreciate.

You can contact us on Discord.
[utopian-moderator]