PHP Bot HTML Taglarını Alma
PHP 

PHP ile bir siteden verileri çekerek o veriler arasında ihtiyacımız olan data yı almak isteyebiliriz bu durumda kullanabileceğimiz birden fazla method bulunuyor . 

Söz konusu methodlardan birisi Regular Expression (Düzenli ifadeler) bir diğeride PHP HTML DOM PARSER ..

PHP HTML DOM PARSER kullanımı itibariyle düzenli ifadelere göre oldukça kolay, cURL ile okuduğumuz sitenin datalarını bu sınıfa veriyoruz ve sınıfta bize istediğimiz datayı methodları yardımıyla geri döndürüyor. 

<?php
    include_once "simple_html_dom.php";
    //CURL VERİSİ ALINIYOR 
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "brkdgn.com");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    
    $result = curl_exec($ch);
    if (curl_errno($ch)) {
        echo 'Error:' . curl_error($ch);
    }
    curl_close ($ch);
    
    foreach($html->find('img') as $result){
           echo $element->src . '<br>';   // Foreach ile saydaki "a" elementi kadar döndür. Ve "href" değeri ile linke ulaş
    }

Yukarıdaki örnekte brkdgn.com web sitesini ziyaret ettik ve sitenin ana sayfasında bulunan tüm resim dosyalarını çektik ve src yani URL lerini ekrana yazdırdık.

İlk örneğimizde brkdgn.com/index.php üzerindeki tüm resimlere ait URL leri almıştık bu seferde sitede kaynakta yer alan ilk resmi alalım ; 

<?php
   echo $result->find("img",0)->src;

 

Farklı bir method olarakta class ve id isimlerine göre div etiketlerinde yer alan dataları alalım örnek olarak IMDB üzerinde bulunan bir filme ait IMDB puanını bu yöntem ile kolaylıkla alabiliriz. 

<?php

    echo $result->find('div[id=deneme]'); // bu birinci yöntem
    echo $result->find('div#deneme'); // buda ikinci yöntem <br />
    // yukarıdaki her iki method içinde bize istediğimiz sonucu döndürecektir. 
    // bide bunu class içerisindeki veriye göre süzmeyi yapacak olursak 
    
    echo $result->find('div[class=deneme]'); // bu birinci yöntem
    echo $result->find('div.deneme'); // buda ikinci yöntem 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir