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);
?>
Php curl ile veri çekme
6
●348
- 20-12-2023, 01:13:34Ü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:03Kodunuzda 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:48VelatErtach adlı üyeden alıntı: mesajı görüntüleArkadaş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.Misafir adlı üyeden alıntı: mesajı görüntüle
çü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:11Basit şekilde arkadaşa yardımını olabileceğimiz düşüncesiyle kod bloğu veriyoruz.Protex adlı üyeden alıntı: mesajı görüntüle
Profesyonel bir işçilik istiyorsa parasını verip yaptırabilir. - 23-12-2023, 22:27:55Merhaba ö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.
bunun yerine siteye ait apileri kullan saygılar.