• 16-01-2022, 15:15:22
    #10
    SSL bulunduran sitelerde curl ile bağlantı yaparken SSL doğrulamasını pasif yapmalısınız.

    CURLOPT_SSL_VERIFYPEER => false
    Son hali;

    $curl = curl_init();
    curl_setopt_array($curl, [
       
        CURLOPT_URL => 'https://www.hepsiburada.com/kampanyalar/cok-satan-kitaplar',
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_REFERER => "https://google.com.tr/",
        CURLOPT_USERAGENT => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"
       
    ]);
       
    $cek = curl_exec($curl);
    $cek = preg_replace("/\s+/", " ", $cek);
       
    preg_match_all('@<div class="box product" data-bind="(.*?)">(.*?)</div>@si', $cek, $sonuc);
      
       
    curl_close($curl);
       
    echo"<pre>";
    print_r($sonuc);
    echo "</pre>";
  • 16-01-2022, 15:19:53
    #11
    MoRTaLCoDeR adlı üyeden alıntı: mesajı görüntüle
    en alltaki kodlarini şununla degis:
    echo"<pre>";
    print_r($sonuc[0][1]);
    echo"</br>";
    print_r($sonuc[1][1]);
    echo "</pre>";
    Riga adlı üyeden alıntı: mesajı görüntüle
    SSL bulunduran sitelerde curl ile bağlantı yaparken SSL doğrulamasını pasif yapmalısınız.

    CURLOPT_SSL_VERIFYPEER => false
    Son hali;

    $curl = curl_init();
    curl_setopt_array($curl, [
      
        CURLOPT_URL => 'https://www.hepsiburada.com/kampanyalar/cok-satan-kitaplar',
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_REFERER => "https://google.com.tr/",
        CURLOPT_USERAGENT => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"
      
    ]);
      
    $cek = curl_exec($curl);
    $cek = preg_replace("/\s+/", " ", $cek);
      
    preg_match_all('@<div class="box product" data-bind="(.*?)">(.*?)</div>@si', $cek, $sonuc);
      
      
    curl_close($curl);
      
    echo"<pre>";
    print_r($sonuc);
    echo "</pre>";
    malesef bu çözümler işe yaramadı.
  • 16-01-2022, 15:24:32
    #12
    DarkBy adlı üyeden alıntı: mesajı görüntüle
    malesef bu çözümler işe yaramadı.
    Aslına çözümlerin işe yaramaması değil yazdığınız kodların hatalı olması problem.

    SSL konusunda söylediğimi mutlaka yapmalısınız. Neden çalışmadığına gelecek olursak;

    $cek değişkenini ekrana yazdırdığınızda verilerin geldiğini görebilirsiniz. Ama yazdığınız regex ifadesi hatalı.

    preg_match_all('@<div class="box product (.*?)" data-bind="(.*?)">(.*?)</div>@si', $cek, $sonuc);
    Bu şekilde olması gerekir. ilgili divin classına ekler olabiliyor örneğin; "hb-placeholder" gibi.

    Düzenli ifadeleri ve phpyi öğrenmeden bunları araştırmak yanlış adım..
  • 16-01-2022, 15:32:28
    #13
    DarkBy adlı üyeden alıntı: mesajı görüntüle
    <?php
      
    $curl = curl_init();
    curl_setopt_array($curl, [
      
        CURLOPT_URL => 'https://www.hepsiburada.com/kampanyalar/cok-satan-kitaplar',
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_REFERER => "https://google.com.tr/",
        CURLOPT_USERAGENT => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"
      
    ]);
      
    $cek = curl_exec($curl);
     
    $cek = preg_replace("/\s+/", " ", $cek);
      
      preg_match_all('@<div class="box product" data-bind="(.*?)">(.*?)</div>@si', $cek, $sonuc);
     
      
    curl_close($curl);
      
    echo"<pre>";
    print_r($sonuc);
    echo "</pre>";
      
     ?>
    üstteki kodu yazarak hepsi burada sitesinde verdiğim linkten alttaki kısmı çekmeye çalışıyorum fakat veri boş dönüyor nedenini bilen yardım edebilecek biri var mı?

    suan telefondan bakiyorum pc de degilim.
    sunu denermisiniz.

    _______________________
    echo"<pre>";
    print_r($sonuc);
    echo "</pre>";
    ________________________
    yukardaki kodlari asagadakilerle degisin

    _______________________

    echo"<pre>";
    print_r($cek);
    echo "</pre>";
    _________________________
    bu degisikligi yaptiniz ve tum siteyi cekiyorsa, cozumu var.
  • 16-01-2022, 15:34:12
    #14
    Riga adlı üyeden alıntı: mesajı görüntüle
    Aslına çözümlerin işe yaramaması değil yazdığınız kodların hatalı olması problem.

    SSL konusunda söylediğimi mutlaka yapmalısınız. Neden çalışmadığına gelecek olursak;

    $cek değişkenini ekrana yazdırdığınızda verilerin geldiğini görebilirsiniz. Ama yazdığınız regex ifadesi hatalı.

    preg_match_all('@<div class="box product (.*?)" data-bind="(.*?)">(.*?)</div>@si', $cek, $sonuc);
    Bu şekilde olması gerekir. ilgili divin classına ekler olabiliyor örneğin; "hb-placeholder" gibi.

    Düzenli ifadeleri ve phpyi öğrenmeden bunları araştırmak yanlış adım..
    dediğiniz şekilde daha önceden denedim fakat tam istediğim içeriği vermedi bu şekilde sizin dediğiniz gibi yaptığımızda istediğimiz yeri elde edemiyoruz bu yüzden kodu atmadan denemelisiniz bence hocam.
  • 16-01-2022, 15:39:07
    #15
    DarkBy adlı üyeden alıntı: mesajı görüntüle
    dediğiniz şekilde daha önceden denedim fakat tam istediğim içeriği vermedi bu şekilde sizin dediğiniz gibi yaptığımızda istediğimiz yeri elde edemiyoruz bu yüzden kodu atmadan denemelisiniz bence hocam.
    Denemediğim hiçbir kodu paylaşmam ama bence siz ne istediğinize önce bir karar vermelisiniz.

    Kod çalışıyor ancak belliki sizin isteklerinizi karşılamıyor. Sanırım ürüne ait bilgileri çektirmeye çalışıyosunuz listenenler içinden; </div> bitişi ile çektiğinizden dolayı diğer verileri almadan geçiyor, bitişi </li> yaparsanız sanırım istediğiniz olur.

    Ama profosyonel destek almanızı veya bu konu ile ilgili dersleri incelemenizi öneririm. Benden bu kadar

    Örnek kod;

    <?php 
       
    $curl = curl_init();
    curl_setopt_array($curl, [
       
        CURLOPT_URL => 'https://www.hepsiburada.com/kampanyalar/cok-satan-kitaplar',
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_REFERER => "https://google.com.tr/",
        CURLOPT_USERAGENT => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"
       
    ]);
       
    $cek = curl_exec($curl);
    $cek = preg_replace("/\s+/", " ", $cek);
       
    preg_match_all('@<div class="box product (.*?)" data-bind="(.*?)">(.*?)</li>@si', $cek, $sonuc);
      
       
    curl_close($curl);
       
    echo"<pre>";
    print_r($sonuc);
    echo "</pre>";
       
    ?>
  • 16-01-2022, 16:06:43
    #16
    Riga adlı üyeden alıntı: mesajı görüntüle
    Denemediğim hiçbir kodu paylaşmam ama bence siz ne istediğinize önce bir karar vermelisiniz.

    Kod çalışıyor ancak belliki sizin isteklerinizi karşılamıyor. Sanırım ürüne ait bilgileri çektirmeye çalışıyosunuz listenenler içinden; </div> bitişi ile çektiğinizden dolayı diğer verileri almadan geçiyor, bitişi </li> yaparsanız sanırım istediğiniz olur.

    Ama profosyonel destek almanızı veya bu konu ile ilgili dersleri incelemenizi öneririm. Benden bu kadar

    Örnek kod;

    <?php 
       
    $curl = curl_init();
    curl_setopt_array($curl, [
       
        CURLOPT_URL => 'https://www.hepsiburada.com/kampanyalar/cok-satan-kitaplar',
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_REFERER => "https://google.com.tr/",
        CURLOPT_USERAGENT => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"
       
    ]);
       
    $cek = curl_exec($curl);
    $cek = preg_replace("/\s+/", " ", $cek);
       
    preg_match_all('@<div class="box product (.*?)" data-bind="(.*?)">(.*?)</li>@si', $cek, $sonuc);
      
       
    curl_close($curl);
       
    echo"<pre>";
    print_r($sonuc);
    echo "</pre>";
       
    ?>
    emekleriniz için sağolun.
  • 16-01-2022, 17:19:47
    #17
    Riga adlı üyeden alıntı: mesajı görüntüle
    SSL bulunduran sitelerde curl ile bağlantı yaparken SSL doğrulamasını pasif yapmalısınız.

    CURLOPT_SSL_VERIFYPEER => false
    Son hali;

    $curl = curl_init();
    curl_setopt_array($curl, [
      
        CURLOPT_URL => 'https://www.hepsiburada.com/kampanyalar/cok-satan-kitaplar',
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_REFERER => "https://google.com.tr/",
        CURLOPT_USERAGENT => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"
      
    ]);
      
    $cek = curl_exec($curl);
    $cek = preg_replace("/\s+/", " ", $cek);
      
    preg_match_all('@<div class="box product" data-bind="(.*?)">(.*?)</div>@si', $cek, $sonuc);
      
      
    curl_close($curl);
      
    echo"<pre>";
    print_r($sonuc);
    echo "</pre>";


    Hocam öncelikle Pc başına yeni geçtim.
    Sorun hepsiburada.com un botları engellemesinden kaynaklı. şuanda kimse verileri çekemiyor. google.com da aratırsanız kimsenin veri çekemediğini görebilirsiniz..

    ben ufak bi uğraş sonucunda bot engelini aştım. örnek sizin istediğiniz kısım : http://arabulara.byethost7.com/cek.php

    şimdi kodları paylaşmam hepsiburada.com adına etik olmaz..
    lutfen kodları istemeyiniz.. (ilerdeki projem için bana lazım, anlayışınız için teşekkürler.)
  • 16-01-2022, 17:30:13
    #18
    MoRTaLCoDeR adlı üyeden alıntı: mesajı görüntüle
    Hocam öncelikle Pc başına yeni geçtim.
    Sorun hepsiburada.com un botları engellemesinden kaynaklı. şuanda kimse verileri çekemiyor. google.com da aratırsanız kimsenin veri çekemediğini görebilirsiniz..

    ben ufak bi uğraş sonucunda bot engelini aştım. örnek sizin istediğiniz kısım : http://arabulara.byethost7.com/cek.php

    şimdi kodları paylaşmam hepsiburada.com adına etik olmaz..
    lutfen kodları istemeyiniz.. (ilerdeki projem için bana lazım, anlayışınız için teşekkürler.)
    Herhangi bir engelleme söz konusu değil.