• 15-02-2020, 12:03:52
    #1
    parsellemeyi nasıl yapıyoruz PHP Simple HTML DOM Parser Manual kullanıyorum

    $baslik = $html->find(".title a"); //bu şekilde for döngüsüyle başlıkları çekebiliyorum fakat span klaslar aynı olduğundan topluca geliyorlar

    $alt_baslik = $html->find(".title span"); for döngüsüyle yapınca ilk okulyolunda bütün spanları çekiyor sonra bahceişleri bu başlıktaji spanları listeiyor ben misal okulyolunda başlığındaki 1. veya 2. spanı çekmek istiyorum. diğerlerinde de aynı şekilde mantığım durduğu yerdeyim buraya danışayım dedim..

    aynı olma durumunda ne yapmamız gerekiyor ?
    son olarak a heref içindeki dom ile linki nasıl alabiliriz ?

    <div class="title left">
    <a href="https://www.felancı site.com">okulyolunda</a>
    <span class="side-info">s1</span>
    <span class="side-info">sdfsdf</span>
    <span class="side-info">3dsdf</span>
    </div>
    <div class="title left">
    <a href="https://www.felancı site.com">bahceişleri</a>
    <span class="side-info">fsdf1</span>
    <span class="side-info">2f</span>
    <span class="side-info">3sss</span>
    </div>
    <div class="title left">
    <a href="https://www.felancı site.com">spor</a>
    <span class="side-info">1f</span>
    <span class="side-info">2fsdf</span>
    <span class="side-info">3fsdf</span>
    </div>
  • 15-02-2020, 12:05:30
    #2
    preg_match() veya preg_match_all() komutu ile regex desenleri kullanarak istediğiniz bir bölümü istediğiniz bir şekilde parse edebilirsiniz hocam ben bunu kullanıyorum.
  • 15-02-2020, 12:23:31
    #3
    TekstilTurkiye adlı üyeden alıntı: mesajı görüntüle
    preg_match() veya preg_match_all() komutu ile regex desenleri kullanarak istediğiniz bir bölümü istediğiniz bir şekilde parse edebilirsiniz hocam ben bunu kullanıyorum.
    bu yöntemi denemiştim fakat eğitim videolarında yaptıklarımın aynısını yapınca bende çalışmıyordu dom kullanmamı istediler nette araştırdım birşeycikler öğrencimfakat

    desenler içindeki desenin aynı isimde olması benim işimi zorlaştırdı her bir desenin içindeki aynı desenleri tekli seçemiyorum preg_match olsun preg_match_all olsun.
  • 15-02-2020, 12:26:20
    #4
    preg_match_all(/">(.*?)<\/a>/,$parsedilecekhtml);
    şeklinde dener misinizbide?
  • 15-02-2020, 12:37:10
    #5
    TekstilTurkiye adlı üyeden alıntı: mesajı görüntüle
    preg_match_all(/">(.*?)<\/a>/,$parsedilecekhtml);
    şeklinde dener misinizbide?
    malesef verileri çekeceğim site ; sinemalar

    <?php
    
    require_once 'simple_html_dom.php';
    
    function replaceSpace($string)
    {
        $string = preg_replace("/\s+/", " ", $string);
        $string = trim($string);
        return $string;
    }
    
    
    $html = file_get_html('https://www.sinemalar.com/sinemasalonu/2205/adana-01-burda-cinema-pink');
    
    $sonuc = $html->find(".movie-detail span.side-info",0)->plaintext;
    //$baslik = $html->find(".card div.movie-detail span",0)->plaintext;
    $baslik = $html->find(".card .movie-detail .title a"); //başlıkları aldık
    //$alt_baslik = $html->find(".card .movie-detail .title span");
    $alt_baslik = $html->find(".card",1);
    ///echo $alt_baslik;
    
    //preg_match_all(/">(.*?)<\/a>/", $html , $bt);
    
    //echo $bt;
    
    echo "<br>";
    preg_match_all('@<span class="side-info">(.*?)</span>@si', $alt_baslik , $a_baslik);
    echo $a_baslik;
    //echo $html->find('.title',1)->plaintext."<br>";
    
    die;
    foreach ($alt_baslik as $key ) {
    echo replaceSpace($key->plaintext)."<br>";
    
    
        # code...
    }
    //<a class="title"
    ?>




    fsahinoglu adlı üyeden alıntı: mesajı görüntüle
    malesef verileri çekeceğim site ; sinemalar

    <?php
    
    require_once 'simple_html_dom.php';
    
    function replaceSpace($string)
    {
        $string = preg_replace("/\s+/", " ", $string);
        $string = trim($string);
        return $string;
    }
    
    
    $html = file_get_html('https://www.sinemalar.com/sinemasalonu/2205/adana-01-burda-cinema-pink');
    
    $sonuc = $html->find(".movie-detail span.side-info",0)->plaintext;
    //$baslik = $html->find(".card div.movie-detail span",0)->plaintext;
    $baslik = $html->find(".card .movie-detail .title a"); //başlıkları aldık
    //$alt_baslik = $html->find(".card .movie-detail .title span");
    $alt_baslik = $html->find(".card",1);
    ///echo $alt_baslik;
    
    //preg_match_all(/">(.*?)<\/a>/", $html , $bt);
    
    //echo $bt;
    
    echo "<br>";
    preg_match_all('@<span class="side-info">(.*?)</span>@si', $alt_baslik , $a_baslik);
    echo $a_baslik;
    //echo $html->find('.title',1)->plaintext."<br>";
    
    die;
    foreach ($alt_baslik as $key ) {
    echo replaceSpace($key->plaintext)."<br>";
    
    
        # code...
    }
    //<a class="title"
    ?>
    sadece başlıkları güzel çekebildim. alt başlıkları veya ona bağlı olanları tek tek çekemiyorum toplu geliyor.
  • 15-02-2020, 16:42:45
    #6
    baslik değişkenini tekrar foreach e sokmayı deneyin hocam.
  • 16-02-2020, 10:56:37
    #7
    coder63 adlı üyeden alıntı: mesajı görüntüle
    baslik değişkenini tekrar foreach e sokmayı deneyin hocam.

    $baslik = $html->find(".card .movie-detail .title a"); //başlıkları aldık

    bu kısmı sorunsuz foreachla alıyorum
    onun alt kısmındaki bilgileri alrken tek tek alamıyorum span kısmı 3 4 tane var ve aynılar hepsini topluca alıyor

    //$alt_baslik = $html->find(".card .movie-detail .title span");

    bu satırı kapattım o yüzden span kısma array nasıl koydururum onu düşünüyorum. 1. filmdeki span kısmındaki 2. span bilgisini almam lazım 2. filmde span kısmındaki 1 span bilgisini misali.