Php ile Farklı Sayfadan Veri Çekme (CURL)

php-ile-farkli-sayfadan-veri-cekme-curl (büyük resim için tıklayın)

Merhabalar, bu gönderide farklı sayfadan (herhangi bir ihlal/şikayet ile karşılaşmamak adına harici sayfa olarak https://www.omurserdar.com/kategori/isletim-sistemleri adresini kullandım) CURL ile nasıl veri çekileceğinden bahsediyorum.  Bu işlemi, örnek üzerinden ifade etmeye çalışıyorum.

Curl işlemlerini hazırlamak/başlatmak için curlBaslat isminde parametre alan fonksiyon mevcut. Parametre olarak hangi sayfa üzerinde işlem gerçekleştireceği belirtilmesi gerekmekte. Bu fonksiyonu, DOMDocument sınıfından nesne örneklendirmesi oluşturduktan sonra bu sınıftaki loadHTML fonksiyonuna parametre olarak verdim. Daha sonrasında sınıfta bulunan getElementsByTagName ile hangi DOM nesnesi üzerinden (div, p, h1, img), getAttribute ile hangi veri seçici(id, class, data-id, value ya da özel seçici; fiyat, durum gibi) üzerinde bulunan verinin getirilmesini istediğimi döngüler ve koşullar ile belirttim. 

Karakter sorunu yaşamamak için curlBaslat sınıfında mb_convert_encoding fonksiyonunu kullandım. Bu fonksiyonda dönüştürülecek olan metni ilk parametreye, hangi karakter setine dönüştüreceğimi ikinci parametreye, hangi karakter setinden dönüştüreceğimi ise üçüncü parametreye yazdım. mb_convert_encoding  isimli fonksiyon için daha detaylı bilgiye https://suatdilek.com.tr/haber/php-mb-convert-encoding-turkce-karakter-hatasi/67 adresinden erişilebilir. 

PHP Kodları

  • function curlBaslat($sayfa){
  • $curl = curl_init($sayfa);
  • curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  • curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
  • curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
  • curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
  • $data = curl_exec($curl);
  • return mb_convert_encoding($data,"UTF-8", "auto");
  • }

 

  • function yaz($aciklama,$veri=""){
  • echo $aciklama." ".$veri."
    ";
  • }

 

  • $dom=new DOMDocument();
  • $dom->loadHTML(curlBaslat("https://www.omurserdar.com/kategori/isletim-sistemleri"),LIBXML_NOWARNING);
  •  
  • foreach($dom->getElementsByTagName('img') as $tag){
  • if($tag->getAttribute('class')=='card-img'){
  • $makaleResimURL=trim($tag->getAttribute('src'));
  • yaz("Makale Resim URL: ",$makaleResimURL);
  • }
  • }

 

  • foreach($dom->getElementsByTagName('h5') as $tag){
  • if($tag->getAttribute('class')=='card-title text-primary'){
  • $makaleBaslik=trim($tag->nodeValue);
  • yaz("Makale Başlık: ",$makaleBaslik);
  • }
  • }

şeklindedir.

omurs

Ö S, 30 Ağustos 2018 Perşembe 15:30 tarihinde kayıt oldu

Beğeni


Yıllara Göre Gönderiler








LombokLoglamaB2C (Business-to-Consumer)B2B (Business-to-Business)İçerik Yönetim Sistemi - CMS (Content Management System)Pagination (Sayfalama)Sanal Özel Ağ - VPN (Virtual Private Network)Cronjob (Zamanlanmış Görevler)Printer-YazıcıJava'daki İlkel Veri Tipleri ve Alabilecekleri DeğerlerBit & Byte ve Hafıza Boyutlarındaki Ölçüm BirimleriSanallaştırma (Virtualization)DNS KayıtlarıE-Fatura ve E-ArşivYazılım Lisans TürleriAudit (Denetim) Açık Kaynak (Open Source)Monitoring (İzleme)Sitemap & Robots.txtKilometretaşı (Milestone)BSMV (Banka ve Sigorta Muameleleri Vergisi)KKDF (Kaynak Kullanımı Destekleme Fonu)Siber Pazartesi (Cyber Monday)Black Friday (Kara Cuma)Hotlink.htaccessCryptoLockerMalwareTrojanWormDependency (Yazılım Geliştirme Sürecinde Paket Bağımlılığı)Configuration (Yazılım Geliştirme Sürecinde Yapılandırma)Yahoo ve Yahoo'nun Başarısızlık NedenleriArchiving (Yazılım Geliştirme Sürecinde Arşivleme)Görsel Dosya Türleri (Image Types)ReleaseVersioning & Tagging (Versiyonlama ve Etiketleme)BuildJob (Yazılım Geliştirme Sürecinde Görevler)SonarQubeCDATA (Character Data)Alan Adı Uzantıları (Domain Name Extensions)Regresyon Kara Kutu (Black-Box) TestBeyaz Kutu (White-box) TestGri Kutu (Grey-box) TestYazılım Geliştirme Sürecindeki Temel Test TürleriKod gözden geçirme (Code Review)Birim Testi (Unit Testing)Yazılım Sürecinde EntegrasyonJAR & WAREager & Lazy Fetch TypeMaskelemeKPI (Key Performance Indicator)KII (Key Impact Indicator)Projenin JAR Dosyasını Oluştur - JAR PathSunucu için Linux dağıtım SeçimiKonyteynerler (container technologies)Runtime & Compile Time (Çalışma ve Derleme Zamanı)@Anotasyonlar (@Annotations)