• 20-12-2023, 01:07:55
    #1
    Merhaba ben php de curl ile veri çekmeye çalışıyorum ama bir türlü başaramadım mesela https://www.borsadirekt.com/ diye bir siteden dolar fiyatını anlık olarak çekmek istiyorum kodum burada hatam nedir


    <?php
    $curl = curl_init();

    // BorsaDirekt URL
    $url = "https://www.borsadirekt.com/";
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);

    // cURL ayarları
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($curl, CURLOPT_HEADER, false);
    curl_setopt($curl, CURLOPT_CAINFO, '/yol/sertifika_dizini/ca-bundle.crt');
    // Veriyi çekme
    $data = curl_exec($curl);

    // Hata kontrolü
    if ($data === false) {
    echo 'cURL hatası: ' . curl_error($curl);
    } else {
    // Veriyi al ve dolar fiyatını bul
    if (preg_match('/updatedData:s*(d+.d+)/', $data, $matches)) {
    $dolar_fiyati = $matches[1];
    echo 'Güncel dolar fiyatı: ' . $dolar_fiyati;
    // Burada dolar fiyatını kullanarak istediğiniz işlemleri yapabilirsiniz.
    } else {
    echo 'Dolar fiyatı bulunamadı.';
    }
    }

    // cURL bağlantısını kapat
    curl_close($curl);
    ?>
  • 20-12-2023, 01:13:34
    #2
    Üyeliği durduruldu
    Şunu dener misiniz?
    <?php
    $curl = curl_init();
    
    // BorsaDirekt URL
    $url = "https://www.borsadirekt.com/";
    
    // cURL ayarları
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($curl, CURLOPT_HEADER, false);
    curl_setopt($curl, CURLOPT_CAINFO, '/yol/sertifika_dizini/ca-bundle.crt');
    
    // Veriyi çekme
    $data = curl_exec($curl);
    
    // Hata kontrolü
    if ($data === false) {
        echo 'cURL hatası: ' . curl_error($curl);
    } else {
        // Veriyi al ve dolar fiyatını bul
        if (preg_match('/<span[^>]*class="satis"[^>]*>([\d,\.]+)<\/span>/', $data, $matches)) {
            $dolar_fiyati = str_replace(',', '.', $matches[1]); // Virgül yerine nokta kullanmak için düzenleme
            echo 'Güncel dolar fiyatı: ' . $dolar_fiyati;
            // Burada dolar fiyatını kullanarak istediğiniz işlemleri yapabilirsiniz.
        } else {
            echo 'Dolar fiyatı bulunamadı.';
        }
    }
    
    // cURL bağlantısını kapat
    curl_close($curl);
    ?>
  • 20-12-2023, 01:14:03
    #3
    Kodunuzda bazı noktalarda düzeltmeler yapmanız gerekiyor. İlk olarak, veriyi alırken kullanmaya çalıştığınız düzenli ifade ve eşleştirme yöntemi uyumsuz olabilir. Ayrıca, sitenin yapısı veya güvenlik önlemleri nedeniyle bu yöntemle veri almak mümkün olmayabilir.
    Aşağıda, daha güvenli bir yaklaşım ve bazı kod düzenlemeleri öneriyorum:

    <?php
    $curl = curl_init();
    
    // BorsaDirekt URL
    $url = "https://www.borsadirekt.com/";
    
    // cURL ayarları
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($curl, CURLOPT_HEADER, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // Geçici olarak SSL doğrulamasını devre dışı bırakabilirsiniz (Dikkat: Güvenlik riski oluşturabilir)
    
    // Veriyi çekme
    $data = curl_exec($curl);
    
    // Hata kontrolü
    if ($data === false) {
        echo 'cURL hatası: ' . curl_error($curl);
    } else {
        // Veriyi al ve dolar fiyatını bul
        if (preg_match('/<div class="doviz-item doviz4".*?>(.*?)<\/div>/s', $data, $matches)) {
            // İlgili HTML bloğunu aldık, şimdi dolar fiyatını içinden çıkarmamız gerekiyor
            if (preg_match('/<span class="value">(.*?)<\/span>/', $matches[1], $dolar_matches)) {
                $dolar_fiyati = $dolar_matches[1];
                echo 'Güncel dolar fiyatı: ' . $dolar_fiyati;
                // Burada dolar fiyatını kullanarak istediğiniz işlemleri yapabilirsiniz.
            } else {
                echo 'Dolar fiyatı bulunamadı.';
            }
        } else {
            echo 'Veri alınamadı veya istenen veri bulunamadı.';
        }
    }
    
    // cURL bağlantısını kapat
    curl_close($curl);
    ?>
    Bu kod, BorsaDirekt'in belirli bir HTML bloğunu arayarak dolar fiyatını almayı deniyor. Ancak, web siteleri yapılarını güncelleme veya değiştirme yeteneğine sahip olduklarından, zamanla bu kodun çalışabilirliği etkilenebilir.
    Ek olarak, web sitelerinden veri alırken ve kullanırken, ilgili sitenin kullanım şartlarına uygun hareket etmeniz önemlidir. Sitenin veri kullanımına ilişkin herhangi bir kısıtlaması veya API hizmeti varsa, bunları kullanmanız önerilir. Ayrıca, kullanmaya çalıştığınız siteyi sık sık talep etmek veya aşırı yükleme yapmak, siteye zarar verebilir veya engellemelere yol açabilir.
  • 22-12-2023, 21:53:48
    #4
    VelatErtach adlı üyeden alıntı: mesajı görüntüle
    Şunu dener misiniz?
    <?php
    $curl = curl_init();
    
    // BorsaDirekt URL
    $url = "https://www.borsadirekt.com/";
    
    // cURL ayarları
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($curl, CURLOPT_HEADER, false);
    curl_setopt($curl, CURLOPT_CAINFO, '/yol/sertifika_dizini/ca-bundle.crt');
    
    // Veriyi çekme
    $data = curl_exec($curl);
    
    // Hata kontrolü
    if ($data === false) {
        echo 'cURL hatası: ' . curl_error($curl);
    } else {
        // Veriyi al ve dolar fiyatını bul
        if (preg_match('/<span[^>]*class="satis"[^>]*>([\d,\.]+)<\/span>/', $data, $matches)) {
            $dolar_fiyati = str_replace(',', '.', $matches[1]); // Virgül yerine nokta kullanmak için düzenleme
            echo 'Güncel dolar fiyatı: ' . $dolar_fiyati;
            // Burada dolar fiyatını kullanarak istediğiniz işlemleri yapabilirsiniz.
        } else {
            echo 'Dolar fiyatı bulunamadı.';
        }
    }
    
    // cURL bağlantısını kapat
    curl_close($curl);
    ?>
    Misafir adlı üyeden alıntı: mesajı görüntüle
    Kodunuzda bazı noktalarda düzeltmeler yapmanız gerekiyor. İlk olarak, veriyi alırken kullanmaya çalıştığınız düzenli ifade ve eşleştirme yöntemi uyumsuz olabilir. Ayrıca, sitenin yapısı veya güvenlik önlemleri nedeniyle bu yöntemle veri almak mümkün olmayabilir.
    Aşağıda, daha güvenli bir yaklaşım ve bazı kod düzenlemeleri öneriyorum:

    <?php
    $curl = curl_init();
    
    // BorsaDirekt URL
    $url = "https://www.borsadirekt.com/";
    
    // cURL ayarları
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($curl, CURLOPT_HEADER, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // Geçici olarak SSL doğrulamasını devre dışı bırakabilirsiniz (Dikkat: Güvenlik riski oluşturabilir)
    
    // Veriyi çekme
    $data = curl_exec($curl);
    
    // Hata kontrolü
    if ($data === false) {
        echo 'cURL hatası: ' . curl_error($curl);
    } else {
        // Veriyi al ve dolar fiyatını bul
        if (preg_match('/<div class="doviz-item doviz4".*?>(.*?)<\/div>/s', $data, $matches)) {
            // İlgili HTML bloğunu aldık, şimdi dolar fiyatını içinden çıkarmamız gerekiyor
            if (preg_match('/<span class="value">(.*?)<\/span>/', $matches[1], $dolar_matches)) {
                $dolar_fiyati = $dolar_matches[1];
                echo 'Güncel dolar fiyatı: ' . $dolar_fiyati;
                // Burada dolar fiyatını kullanarak istediğiniz işlemleri yapabilirsiniz.
            } else {
                echo 'Dolar fiyatı bulunamadı.';
            }
        } else {
            echo 'Veri alınamadı veya istenen veri bulunamadı.';
        }
    }
    
    // cURL bağlantısını kapat
    curl_close($curl);
    ?>
    Bu kod, BorsaDirekt'in belirli bir HTML bloğunu arayarak dolar fiyatını almayı deniyor. Ancak, web siteleri yapılarını güncelleme veya değiştirme yeteneğine sahip olduklarından, zamanla bu kodun çalışabilirliği etkilenebilir.
    Ek olarak, web sitelerinden veri alırken ve kullanırken, ilgili sitenin kullanım şartlarına uygun hareket etmeniz önemlidir. Sitenin veri kullanımına ilişkin herhangi bir kısıtlaması veya API hizmeti varsa, bunları kullanmanız önerilir. Ayrıca, kullanmaya çalıştığınız siteyi sık sık talep etmek veya aşırı yükleme yapmak, siteye zarar verebilir veya engellemelere yol açabilir.
    Arkadaşlar chatgpt yazısını kopyala yapıştır yaparak insanları yanıltmayın. (son zamanlarda moda oldu bu olay). verdiğiniz kodlar yanlış ve uydurmaca.
    çünkü biraz araştırmış olsanız o siteden direk curl ile doviz verisi alınamayacığını farkedersiniz.
    ilgili site veriyi json post ile sonradan işliyor, kaynagı curl ile çekerek alamazsın.
  • 22-12-2023, 21:59:11
    #5
    Protex adlı üyeden alıntı: mesajı görüntüle
    Arkadaşlar chatgpt yazısını kopyala yapıştır yaparak insanları yanıltmayın. (son zamanlarda moda oldu bu olay). verdiğiniz kodlar yanlış ve uydurmaca.
    çünkü biraz araştırmış olsanız o siteden direk curl ile doviz verisi alınamayacığını farkedersiniz.
    ilgili site veriyi json post ile sonradan işliyor, kaynagı curl ile çekerek alamazsın.
    Basit şekilde arkadaşa yardımını olabileceğimiz düşüncesiyle kod bloğu veriyoruz.
    Profesyonel bir işçilik istiyorsa parasını verip yaptırabilir.
  • 23-12-2023, 22:27:55
    #6
    Merhaba öncelikle curl ile veri çekebilmen için sayfaya sağ tıkla ve sayfa kaynağını görüntüle sekmesine tıkla çekmek istediğin veri orda ise curl ile veri çekebilirsin aksi durumda sayfayı incele dediğinde veriye ulaşabiliyorsan javascript veya benzeri bir yazılım ile veriyi yüklüyorlar bu durumda ajax kodlarını veya javascript kodlarını istek atma ve veri çekme yollarını güzelce ne araştırman lazım baya bir zaman anlıyor bunun yerine siteye ait apileri kullan saygılar.
  • 24-12-2023, 19:55:07
    #7
    Tamamdır nasıl olduğunu çözdüm herkese teşekkür ederim.