• 05-02-2015, 12:03:57
    #1
    Merhaba arkadaşlar, öncelikle uzun zaman önce davetiye almama rağmen aranıza şu an katıldım umarım faydalı bilgiler paylaşacağım

    Şİmdi benim bot ile ilgili bir sorunum var mgm.gov.tr meteorolojiden hava durumu verisini curl bot ile çekiyorum burada takıldığım bir kaç kodla ilgili sizlere danışacağım şimdi:

      preg_match_all('@<td id="cp_sayfa_thmMax1" class="maxS">(.*?)</td>@si',$site,$veri_derece1);
    kodu ile mgm.gov.tr de ki bir ilin sayfasında 1. günün tahmini çekmeyi başardım.

    fakat bu tahmin sayfasında bulunan hadise olayı yani az bulutlu yağmurlu vb. işaret eden resmi de;

      preg_match_all('@<img id="cp_sayfa_imgHadise1(.*?)>@si',$site,$veri_derece3);
    ile çektiğimde resim yolu benim çektiğim domain oluyor resim çıkmıyor ama benim için asıl sorun şu resim çıkmasına da gerek yok sadece bu resmin alt değerinde az bulutlu yazıyor ve ben sadece bu alt değerini çekeyim yeter umarım sorum açık olmuştur yardımlarınzı bekliyorum
  • 05-02-2015, 12:12:44
    #2
    Direk hangi linkden çekmeye çalıştığınızı paylaşırsanız yardımcı olabilirim.

    Kod yapısını bilmeden yardımcı olmamız çok zor.
  • 05-02-2015, 12:13:26
    #3
    çünkü resim linklerini böyle vermişler o yüzden senin domain ekleniyor basına.
    Alarm/images/MeteoAlarm%20Images/beyaz zemin/YAGMUR.png

    çektiğin bu resim verisinin başına şunu ekle.
    'http://mgm.gov.tr/'

    echo 'http://mgm.gov.tr/'.$veri_derece3[0][0];
    şeklinde olacak kolay gelsin
  • 05-02-2015, 12:15:32
    #4
    <meta http-equiv="Content-Type" content="text/HTML; charset=utf-8" />
    <?php
    setlocale(LC_TIME,"turkish"); $tarih = strftime("%d %B %Y %A");
     function siteConnect($site)
     {
    
      $ch = curl_init();
      $hc = "YahooSeeker-Testing/v3.9 (compatible; Mozilla 4.0; MSIE 5.5; Yahoo! Search - Web Search)";
      curl_setopt($ch, CURLOPT_REFERER, 'http://www.google.com');
      curl_setopt($ch, CURLOPT_URL, $site);
      curl_setopt($ch, CURLOPT_USERAGENT, $hc);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
      $site = curl_exec($ch);
    
    
    $bugun = date("Y-m-d");
    $yenitarih = strtotime('+3 day',strtotime($bugun));
    $yenitarih = date('d' ,$yenitarih );
    echo $tarih;
    
      curl_close($ch);
      
      // Veriyi parçalama işlemi
      preg_match_all('@<td id="cp_sayfa_thmMax1" class="maxS">(.*?)</td>@si',$site,$veri_derece1);  
      preg_match_all('@<td id="cp_sayfa_thmMax2" class="arkaAlter maxS">(.*?)</td>@si',$site,$veri_derece2);  
      preg_match_all('@<img id="cp_sayfa_imgHadise1(.*?)>@si',$site,$veri_derece3);  
    
     echo "<br><b>Erzincan:</b>"; 
     echo "<br><b>Bugun:</b>"; 
              echo $veri_derece1[0][0];   
       echo "<br><b>Yarın:</b>"; 
    echo $veri_derece2[0][0];    
    
       echo "<br><b>3.Gün:</b>"; 
    echo $veri_derece3[0][0];    
    
     }
     
     
     $giris = siteConnect('http://www.mgm.gov.tr/tahmin/il-ve-ilceler.aspx?m=ERZINCAN');
     
     echo $giris;
    
    ?>
    bu kodlarla çekiyorum dediğim gbi önemli olan sadece o resmin alt="" değerini çekip ekrana yazdırmak arkadaşlar
  • 05-02-2015, 12:19:55
    #5
    deleter20 adlı üyeden alıntı: mesajı görüntüle
    çünkü resim linklerini böyle vermişler o yüzden senin domain ekleniyor basına.
    Alarm/images/MeteoAlarm%20Images/beyaz zemin/YAGMUR.png

    çektiğin bu resim verisinin başına şunu ekle.
    'http://mgm.gov.tr/'

    echo 'http://mgm.gov.tr/'.$veri_derece3[0][0];
    şeklinde olacak kolay gelsin
    aynı şekilde dediğim gibi.

    $resim = str_replace('../', '', $veri_derece3[0][0]);
    echo 'http://mgm.gov.tr/'.$resim;

    bunun için kodlara ihtiyac yoktu aslında mantık hep aynı mantıktır
  • 05-02-2015, 12:23:21
    #6
    Kobra_fighterTR adlı üyeden alıntı: mesajı görüntüle
    Direk hangi linkden çekmeye çalıştığınızı paylaşırsanız yardımcı olabilirim.

    Kod yapısını bilmeden yardımcı olmamız çok zor.
    http://mgm.gov.tr/tahmin/il-ve-ilcel...m=ERZINCAN#sfB örneğin bu link

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 12:23:21 -->-> Daha önceki mesaj 12:20:53 --

    bu şekilde yaptığğımız zaman resim sonucu vermiyor
  • 05-02-2015, 13:32:23
    #7
    Kimlik doğrulama veya yönetimden onay bekliyor.
    xAsAx adlı üyeden alıntı: mesajı görüntüle
    http://mgm.gov.tr/tahmin/il-ve-ilcel...m=ERZINCAN#sfB örneğin bu link

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 12:23:21 -->-> Daha önceki mesaj 12:20:53 --

    bu şekilde yaptığğımız zaman resim sonucu vermiyor
    $a='<img id="cp_sayfa_imgHadise1" src="../FILES/imgIcon/99/e_36x36t_png/-28.png" alt="AZ BULUTLU">';
    
    preg_match('#<img id="cp_sayfa_imgHadise1" src="(.*?)" alt="(.*?)"#si',$a,$b);
    
    echo $b[1]."<br>".$b[2];
    Bu şekilde çıktı şöyle oldu,

    ../FILES/imgIcon/99/e_36x36t_png/-28.png
    AZ BULUTLU

    Tabi ben preg_match kullandım. Birden fazla veri çekecekseniz preg_match_all kullanılacak.
  • 05-02-2015, 13:58:32
    #8
    sawashan adlı üyeden alıntı: mesajı görüntüle
    $a='<img id="cp_sayfa_imgHadise1" src="../FILES/imgIcon/99/e_36x36t_png/-28.png" alt="AZ BULUTLU">';
    
    preg_match('#<img id="cp_sayfa_imgHadise1" src="(.*?)" alt="(.*?)"#si',$a,$b);
    
    echo $b[1]."<br>".$b[2];
    Bu şekilde çıktı şöyle oldu,

    ../FILES/imgIcon/99/e_36x36t_png/-28.png
    AZ BULUTLU

    Tabi ben preg_match kullandım. Birden fazla veri çekecekseniz preg_match_all kullanılacak.

    tamamda hocam bu durumda bu güncel kalmazki yani mesela hadise 2 yaptğımdada az bulutlu değerini veriyor :S
  • 05-02-2015, 16:30:58
    #9
    problem çözülmüştür incelemek isteyenler için kod :


    <?php
    function baglan($veri) {
    	$ref="http://google.com.tr";
    	$uag="Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36";
    	$a=curl_init();
    	curl_setopt($a,CURLOPT_URL,$veri);
    	curl_setopt($a,CURLOPT_REFERER,$ref);
    	curl_setopt($a,CURLOPT_USERAGENT,$uag);
    	curl_setopt($a,CURLOPT_RETURNTRANSFER,true);
    	$b=curl_exec($a);
    	curl_close($a);
    	return $b;
    }
    $a="http://mgm.gov.tr/tahmin/il-ve-ilceler.aspx?m=ADANA#sfB";
    $b=baglan($a); $c=explode('<div id="govde_ust_genis_icerik_sayfa">',$b); $c=explode('<div id="divSecim520Blok">',$c[1]); $c=$c[0];
    preg_match('#<h1 id="sfB" style="clear:both;">(.*?)<strong>(.*?)</strong></h1>#',$c,$a1); $a1=$a1[2]; // $a1 IL ISMI.
    $c1=explode('<tbody>',$c); $c1=explode('</tbody>',$c1[1]); $c1=$c1[0];
    preg_match_all('#<tr>(.*?)</tr>#si',$c1,$d);
    
    echo $a1."<br>"; // IL ISMINI YAZDIRDIK.
    for($i=0;$i<=count($d[1])-1;$i++) {
    	if($i==0) {$num="1";} if($i==1) {$num="2";} if($i==2) {$num="3";}
    	preg_match('#<th id="cp_sayfa_thmGun'.$num.'" class="(.*?)">(.*?)</th>#si',$d[1][$i],$gun); $gun=$gun[2]; // GÜN.
    	preg_match('#<td id="cp_sayfa_thmMax'.$num.'" class="(.*?)">(.*?)</td>#',$d[1][$i],$derece); $derece=$derece[2]; // MAX SICAKLIK DERECESI.
    	preg_match('#<img id="cp_sayfa_imgHadise'.$num.'" src="(.*?)" alt="(.*?)" /></td>#',$d[1][$i],$durum); $durum=$durum[2]; // HAVA DURUMU.
    	echo $gun.":".$derece."  |".$durum."<br>";
    	if($i==2) {break;}
    }
    ?>