• 25-02-2018, 20:25:07
    #1
    Merhaba Arkadaşlar
    Bu siteden https://www.havaturkiye.com/weather/...7024&LEVEL=180 güneş doğuş batış saatlerini çekmeye çalışıyorum ancak kodlar çalışmıyor, ayrıca file_get_contents ile de site içeriği de gelmiyor.
    Sorun ne olabilir?
    function ara($bas, $son, $yazi)
        {
          @preg_match_all('/' . preg_quote($bas, '/') .
          '(.*?)'. preg_quote($son, '/').'/i', $yazi, $m);
          return @$m[1];
        }
    $link = "http://www.havaturkiye.com/weather/maps/city?WMO=17024&LEVEL=180";
            $icerik = file_get_contents($link);
            print_r($icerik);
    $gunes= ara('<td>','</td>',$icerik);
            echo $gunes.'<br/>';
  • 25-02-2018, 20:26:46
    #2
    curl deneyin
    ve explode kullanın
  • 25-02-2018, 21:52:05
    #3
    hesapadim adlı üyeden alıntı: mesajı görüntüle
    curl deneyin
    ve explode kullanın
    Curl ile denedim yine herhangi bir sonuç alamadım.
    fonksiyon.php
    error_reporting(0);
    function Baglan($url){
        $curl=curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
        curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,0);
        curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,0);
        curl_setopt($curl, CURLOPT_FOLLOWLOCATION, TRUE);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
        $cikti=curl_exec($curl);
        echo curl_error($curl);
        curl_close($curl);
        return str_replace(array("\n","\t","\r"),null,$cikti);
    }
     
     
    include("fonksiyon.php");
    $bag=Baglan("http://www.havaturkiye.com/weather/maps/city?WMO=17024&LEVEL=180");
    print_r($bag);
    preg_match_all('#<td>(.*?)</td>#', $bag, $diziler_list);//Tüm 
    print_r($diziler_list);
  • 25-02-2018, 21:53:46
    #4
    AsHaYazilim adlı üyeden alıntı: mesajı görüntüle
    Merhaba Arkadaşlar
    Bu siteden https://www.havaturkiye.com/weather/...7024&LEVEL=180 güneş doğuş batış saatlerini çekmeye çalışıyorum ancak kodlar çalışmıyor, ayrıca file_get_contents ile de site içeriği de gelmiyor.
    Sorun ne olabilir?
    function ara($bas, $son, $yazi) { @preg_match_all('/' . preg_quote($bas, '/') . '(.*?)'. preg_quote($son, '/').'/i', $yazi, $m); return @$m[1]; } $link = "http://www.havaturkiye.com/weather/maps/city?WMO=17024&LEVEL=180"; $icerik = file_get_contents($link); print_r($icerik); $gunes= ara('<td>','</td>',$icerik); echo $gunes.'<br/>';

    file_get_contents ile veri çekmek pek sağlıklı değil , tavsiye etmiyorum bot işlemleri her zaman curl ile yapılması gerekir benim şahsi görüşüm budur
    sitede https protokolü yanı sıra ek olarak curl - file_get_contents taraflı bir engelleme söz konusu bunu aşmak için mecburen curl kullanmak zorundasınız.

    Siteye curl yazıp user agent göndereceksiniz google bot olarak bu durumda engeli ancak böyle aşabilirsiniz.
    Sonuç alamazsınız tekrar yazın , yardımcı olmaya çalışırız
  • 25-02-2018, 21:56:36
    #5
    D62 adlı üyeden alıntı: mesajı görüntüle
    file_get_contents ile veri çekmek pek sağlıklı değil , tavsiye etmiyorum bot işlemleri her zaman curl ile yapılması gerekir benim şahsi görüşüm budur
    sitede https protokolü yanı sıra ek olarak curl - file_get_contents taraflı bir engelleme söz konusu bunu aşmak için mecburen curl kullanmak zorundasınız.

    Siteye curl yazıp user agent göndereceksiniz google bot olarak bu durumda engeli ancak böyle aşabilirsiniz.
    Sonuç alamazsınız tekrar yazın , yardımcı olmaya çalışırız
    Hocam yukarıdaki postta da belirttiğim gibi şu şekilde bir şey denedim. Yine sonuç alamadım.

    fonksiyon.php
    error_reporting(0);
    function Baglan($url){
        $curl=curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
        curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,0);
        curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,0);
        curl_setopt($curl, CURLOPT_FOLLOWLOCATION, TRUE);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
        $cikti=curl_exec($curl);
        echo curl_error($curl);
        curl_close($curl);
        return str_replace(array("\n","\t","\r"),null,$cikti);
    }
     
    include("fonksiyon.php");
    $bag=Baglan("http://www.havaturkiye.com/weather/maps/city?WMO=17024&LEVEL=180");
    print_r($bag);
    preg_match_all('#<td>(.*?)</td>#', $bag, $diziler_list);//Tüm
    print_r($diziler_list);
  • 25-02-2018, 22:00:10
    #6
    AsHaYazilim adlı üyeden alıntı: mesajı görüntüle
    Hocam yukarıdaki postta da belirttiğim gibi şu şekilde bir şey denedim. Yine sonuç alamadım.

    fonksiyon.php error_reporting(0); function Baglan($url){ $curl=curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl,CURLOPT_RETURNTRANSFER,true); curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,0); curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,0); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, TRUE); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); $cikti=curl_exec($curl); echo curl_error($curl); curl_close($curl); return str_replace(array("\n","\t","\r"),null,$cikti); } include("fonksiyon.php"); $bag=Baglan("http://www.havaturkiye.com/weather/maps/city?WMO=17024&LEVEL=180"); print_r($bag); preg_match_all('#<td>(.*?)</td>#', $bag, $diziler_list);//Tüm print_r($diziler_list);
    Agenti normal olarak göndermeyeceksiniz google bot agent göndereceksiniz karşı tarafa.
    onu yaparsanız düzelir sorununuz.
    yapamaz iseniz tekrar mesaj atın , şuan da size örnek bir kod versem sorununuz çözülür fakat ben sizin bu konuyu kendi başınıza çözmeniz taraftarıyım , hem öğrenmiş olursunuz bu esnada konuya da hakim olmuş olursunuz , yapamaz iseniz tekrar alıntı yapın örnek göstereyim
  • 25-02-2018, 22:12:40
    #7
    D62 adlı üyeden alıntı: mesajı görüntüle
    Agenti normal olarak göndermeyeceksiniz google bot agent göndereceksiniz karşı tarafa.
    onu yaparsanız düzelir sorununuz.
    yapamaz iseniz tekrar mesaj atın , şuan da size örnek bir kod versem sorununuz çözülür fakat ben sizin bu konuyu kendi başınıza çözmeniz taraftarıyım , hem öğrenmiş olursunuz bu esnada konuya da hakim olmuş olursunuz , yapamaz iseniz tekrar alıntı yapın örnek göstereyim
    Hocam fonksiyon.php de şu şekilde değişiklik yaptım ama sonuç aynı. PHP konusunda çok fazla bilgim olmadığı için tam konuya hakim değilim, buradan aldığım veriyi Android uygulamamda göstermem yeterli olacak benim için.
    Yardımcı olabilirseniz sevinirim.
    error_reporting(0);
    function Baglan($url){
        $curl=curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
        curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,0);
        curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,0);
        curl_setopt($curl, CURLOPT_FOLLOWLOCATION, TRUE);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        //curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
        curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)');
        $cikti=curl_exec($curl);
        echo curl_error($curl);
        curl_close($curl);
        return str_replace(array("\n","\t","\r"),null,$cikti);
    }
  • 25-02-2018, 22:23:33
    #8
    function connected($Url){
    $UserAgent = 'Mozilla/5.0 (compatible; Googlebot/2.1; +[url]http://www.google.com/bot.html)';
    $Referer = 'http://www.google.com/';
    $ch = curl_init();
    curl_setopt ($ch, CURLOPT_URL, $Url);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($ch, CURLOPT_REFERER, $Referer);
    curl_setopt ($ch, CURLOPT_USERAGENT, $UserAgent);
    $return = curl_exec($ch);
    curl_close($ch);
    return $return;
    }
    $Url = connected('https://www.havaturkiye.com/weather/maps/city?WMO=17024&LEVEL=180');
    preg_match('#<table class="gr2">(.*?)</table>#si', $Url, $Table);
    print_r($Table);
    Bundan sonraki işlemleri artık kendiniz halledebilirsiniz , gerisi ellerinizden öper.
  • 28-02-2018, 08:22:03
    #9
    Sorunun sunucudan kaynaklandığı tespit edildi, başka bir sunucu ile kodlar sorunsuz çalıştı. Yardımcı olan herkese teşekkürler.