Curl Kütüphanesi ile Veri Çekimi – #2

Önceki yazımız da curl kütüphanesi ile veri çekimi işlemine hafiften giriş yapıp biraz detaylara inmiştik. Bu yazımızda ise biraz daha detaylar üzerinde duracağız.

Şöyle geçen yazı da neler yaptığımıza bakarsak;

  • Curl kütüphanesi için curl fonksiyonunu çalıştırdık.
  • Veri alacağımız adrese bağlandık.
  • Bağlandığımız adresten verileri çektik.
  • Adrese tarayıcı bilgisi ve ip bilgilerimizi gönderdik.

Eğer yukarıda yer alan özellikler ile sıkıntı yaşıyorsanız, Curl Kütüphanesi ile Veri Çekimi – #1 isimli yazımızda giderebilirsiniz sıkıntınızı.

Yeni yazımıza giriş yapalım. İlk olarak önceki yazıda,

Eğer verilerimizi çekip hemen ekrana yazdırmak istemezsek curl_exec() fonksiyonunu bir değişkene atayabiliriz.

demiştik. Eğer ekrana yazdırmak istemezsek bir başka yol daha mevcut. Bu yolu kullanmamamızı sağlayacak kalıba göz atalım.

curl_setopt( curl oturumu , CURLOPT_RETURNTRANSFER , değer );

Gördüğünüz üzere CURLOPT_RETURNTRANSFER fonksiyonu ile sağlıyoruz bu işlemi. Burada yer alan değer parametresi; true, false, 1 ve 0 değerlerini alabilir.

Parametremiz, true veya 1 değerlerini aldığı zaman curl oturumu ile çektiğimiz verileri, ekrana yazdırmaz.

Aynı şekilde false veya 0 değerlerini kullandığımızda da ekrana yazdırır.

Örnek vermemiz gerekirse eğer;

// Ekrana Yazdırmayanlar
curl_setopt( $ch , CURLOPT_RETURNTRANSFER , 1 );
curl_setopt( $ch , CURLOPT_RETURNTRANSFER , true );
// Ekrana Yazdıranlar
curl_setopt( $ch , CURLOPT_RETURNTRANSFER , 0 );
curl_setopt( $ch , CURLOPT_RETURNTRANSFER , false );

Ayrıca oldu ya önceden tıkır tıkır bağlandığımız siteye bağlanamaz olduk, veriler gelmiyor. Niye gelmediğini öğrenip bunu ekrana yazdırabiliriz.

Bunu için CURLOPT_HEADER fonksiyonunu kullanacağız. Bu fonksiyonun değerleri olan true, false, 1 ve 0 da tıpkı CURLOPT_RETURNTRANSFER fonksiyonundaki gibi aynı şekilde kullanılıyor.

Bu fonksiyonun yapısı şu şekildedir:

curl_setopt( curl oturumu , CURLOPT_HEADER , değer );

Örnekte kullanılmış hali ise,

$ch = curl_init();
curl_setopt( $ch , CURLOPT_URL , "http://goo.gl/up6yH8" );
curl_setopt( $ch , CURLOPT_HEADER , 1 );
$cekilenveri = curl_exec($ch);
curl_close($ch);
 
echo $cekilenveri;

Gördüğünüz üzere kullandığımız örnekte bağlandığımız kaynak kısaltılmış link ile yönlendirilmiş halde, eğer biz bu yönlendirmeye de devam etmek istiyorsak, CURLOPT_FOLLOWLOCATION fonksiyonunu kullanacağız. CURLOPT_FOLLOWLOCATION fonksiyonu da önceki iki fonksiyon ile aynı yapıda ek olarak yapısını yazmak yerine direkt olarak örnekte göstereceğim.

$ch = curl_init();
curl_setopt( $ch , CURLOPT_URL , "http://goo.gl/up6yH8" );
curl_setopt( $ch , CURLOPT_FOLLOWLOCATION , 1 );
$cekilenveri = curl_exec($ch);
curl_close($ch);
 
echo $cekilenveri;

Bu örneği sadece kısaltılmış linkler için düşünmeyin, iç içe geçirilmiş aklınıza gelen tüm adreslerde kullanabilirsiniz.

Bağlandığınız kaynak çok yoğun trafikli bir sunucu olabilir, ara sıra bağlantıda problem yaşatabilir. Bu bağlantı problemlerinde de sayfanızı uzun uzun bekletir. Bu beklemeyi önlemek ve direkt olarak işlemi yarıda keserek curl oturumunu kapatmak isterseniz, CURLOPT_TIMEOUT fonksiyonunu kullanmanız gerekir. Bu fonksiyonun yapısı şu şekildedir:

curl_setopt(curl oturumu, CURLOPT_TIMEOUT, saniye cinsinden maksimum bekleme süresi);

Yani 10 saniye de bağlantı kurulamadığı takdirde oturum kapatılsın derseniz kullanacağımız örnek aşağıdaki gibi olacaktır.

curl_setopt($ch, CURLOPT_TIMEOUT, 10);

Örneğin iş yerinizde kullandığınız bir veritabanı mevcut. Ve güvenlik açısından sadece bir bölgeden bağlantıya cevap vermekte. Bunun için proxy kullanmamız gerekecek. Proxy ile bağlantı için CURLOPT_PROXY ve CURLOPT_PROXYPORT fonksiyonlarını kullanacağız.

Bu fonksiyonların yapısı şu şekildedir:

$ipadresi = "bağlanacağınız ip adresi"; 
$ipport = "bağlanacağınız port";
curl_setopt( curl oturumu , CURLOPT_PROXY , $ipadresi );
curl_setopt( curl oturumu , CURLOPT_PROXYPORT , $ipport );

Örnek olması açısından buradan aldığım herhangi bir ip adresini kullanacağım.

$ch = curl_init();
curl_setopt( $ch , CURLOPT_URL , "http://www.geoiptool.com/" );
curl_setopt( $ch, CURLOPT_TIMEOUT, 5);
$ipadresi = "188.168.82.145"; 
$ipport = "8080";
curl_setopt( $ch , CURLOPT_PROXY , $ipadresi );
curl_setopt( $ch , CURLOPT_PROXYPORT , $ipport );
$cekilenveri = curl_exec($ch);
curl_close($ch);
 
echo $cekilenveri;

 

Yorumlar

“Curl Kütüphanesi ile Veri Çekimi – #2” için 6 yanıt

  1. Berkcan Sarı avatarı
    Berkcan Sarı

    Sayın Efekan,

    Konuyla alakalı 2 makalenizi de okudum teşekkür ederim lakin yapmak istedigimi başaramadım bir türlü:(

    Uzun zamandır Curl ile belirli 1 SATIR veri çekmeye çalıştığım bu site http://goo.gl/2IGpyP var ve bunu başaramadım bir türlü. Siteden daha önceleri file_get_contents ile çekim yapıyordum lakin artık müsade etmiyor buna. curl ile bunu nasıl yapabilirim herhangi bir satırını Curl ile alabileceğimiz örnek verebilirmisiniz? Yanıt için vakit ayırırsanız minnettar olacağım.
    Saygılar.

    1. CakirEfekan avatarı

      Merhaba Berkcan,

      Değerli yorumun için teşekkür ederim öncelikle. Curl Kütüphanesi hakkında ki yazılarım henüz tamamlanmış durum da değil ne yazık ki. Bu makalelerin devamı gelecek lakin mevcut durumumda yaşadığım yoğunluktan dolayı site içinde sadece yorumlar ile ilgilenebiliyorum.

      Senin istediğin bağlantıdan herhangi bir veri çekimini gerçekleştirebilecek örneği bu adreste bulabilirsin.

  2. Berkcan Sarı avatarı
    Berkcan Sarı

    Teşekkür ederim yanıt için.
    Veridiğin örnek kodlarla denemeler yapacağım inşAllah başarırım.
    Tekrar teşekkürler. saygılar..

  3. Berkcan Sarı avatarı
    Berkcan Sarı

    Ellerin dert görmesin üstadım.
    Denedim Kod canavar gibi çalışıyor.
    Bu yoğunlukta zaman ayırıp yanıtladığın için Allah razı olsun 🙂

    Saygılar..

    1. CakirEfekan avatarı

      Yardımcı olabildiysem ne mutlu. Bir uzman olma yolunda, öğrendiğim her bilgiyi kendi anlayabildiğim şekilde acemice anlatmaya çalışıyorum. Neyse ki uzman olma yolunun başındayım da ekleyebileceğim bir ton içerik beni bekliyor. Vakit ayırıp eklediğim içeriği incelediğin için teşekkürler.
      İyi çalışmalar.

  4. Berkcan Sarı avatarı
    Berkcan Sarı

    Basamakları sağlam adımlarla çıkmak başarının anahtarıdır üstadım.
    Bu yolda başarılı olacağından şüphem yok.
    Sitenin sıkı takipçilerinden biri oldum. özellikle sözlük üzerine yaptığın çalışmaya dair bu konuya gelip görmeyenlere tavsiyemdir.
    Saygılar..

CakirEfekan için bir yanıt yazın Yanıtı iptal et

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir