• 11-07-2019, 23:06:32
    #1
    Merhabalar,Alttaki şekilde ilgili siteden
    veriyi çekiyorum karşı siteden 20 satırlık veri var ama ben çekince tek bir satır geliyor geri kalanını nasıl alabilirim
    Şimdiden çok teşekkür ederim

    <?php
    function ara($bas, $son, $yazi)
    {
    @preg_match_all('/' . preg_quote($bas, '/') .
    '(.*?)'. preg_quote($son, '/').'/i', $yazi, $m);
    return @$m[1];
    }
    
    $site = "https://siteadi.com/";
    $icerik = file_get_contents($site);
    $a = ara('class="KoyuCevir" style="width: 33px; color:#ca0000;">', '</div>', $icerik);
    ?>
    
    <tr>
    <td><?php echo $a[0]; ?></td>
                </tr>
  • 11-07-2019, 23:17:01
    #2
    Bu tarz bot yazılımlarında regex kullanmak sağlıklı olmuyor. Bunun yerine tavsiyem html parser kullanmaktır. Benim kullandığım kütüphanenin github linki aşağıda.
    https://github.com/paquettg/php-html-parser
    Kütüphaneyi yükledikten sonra sanki jquery ile element seçer gibi işlem yapıyorsunuz. Link detaylıca açıklıyor. Böylece eleman sayısını vs. kafaya takmadan sorununuzu çözebilirsiniz.
    Eğer veri çektiğiniz siteyi ve çekmek istediğiniz kısımı paylaşırsanız daha kolay yardımcı olabiliriz. Kendi adıma tam olarak sorunuzu anlayamadım.
  • 11-07-2019, 23:20:19
    #3
    Fonksiyonda “return m;” yapın. Altta “a” değişkenini foreach içinde yazdırın. Ve değişken isimlerini daha açıklayıcı kullanın
  • 11-07-2019, 23:20:47
    #4
    magicphp adlı üyeden alıntı: mesajı görüntüle
    Bu tarz bot yazılımlarında regex kullanmak sağlıklı olmuyor. Bunun yerine tavsiyem html parser kullanmaktır. Benim kullandığım kütüphanenin github linki aşağıda.
    https://github.com/paquettg/php-html-parser
    Kütüphaneyi yükledikten sonra sanki jquery ile element seçer gibi işlem yapıyorsunuz. Link detaylıca açıklıyor. Böylece eleman sayısını vs. kafaya takmadan sorununuzu çözebilirsiniz.
    Eğer veri çektiğiniz siteyi ve çekmek istediğiniz kısımı paylaşırsanız daha kolay yardımcı olabiliriz. Kendi adıma tam olarak sorunuzu anlayamadım.
    hocamveriyi çektiğim siteyi pm olarak gönderdim ek olarak istediğim tekrar izah etmeye çalışayım
    karşı sitede 20satır var ben bot ile çekince tek satır geliyor



    aCadir adlı üyeden alıntı: mesajı görüntüle
    Fonksiyonda “return m;” yapın. Altta “a” değişkenini foreach içinde yazdırın. Ve değişken isimlerini daha açıklayıcı kullanın
    olmadı ya hocam
  • 12-07-2019, 01:16:01
    #5
    Site adresini paylaşabilirseniz, kodunuzu debug edelim. (Özelden paylaşabilirsiniz.)
  • 12-07-2019, 01:20:28
    #6
    bayGaReZ adlı üyeden alıntı: mesajı görüntüle
    Site adresini paylaşabilirseniz, kodunuzu debug edelim. (Özelden paylaşabilirsiniz.)
    pm gönderdim hocam
  • 12-07-2019, 02:32:11
    #7
    ayilmaz9 adlı üyeden alıntı: mesajı görüntüle
    pm gönderdim hocam
    Composer ile html parse paketi dahil ettim. Kod ve output şurada (döngü içinde exit olduğu için tek satır çıktı verir.):

    https://paste.laravel.io/2efc596e-2f...3-d2943916bfea

    HTML tasarımını istediğin gibi yapabilirsin.
  • 13-07-2019, 02:01:05
    #8
    Merhaba hocam konunuza baktım. Aşağıda açıklama satırları ile birlikte daha önce facebook için yazdığım bir bottan bir kısım ekliyorum. Bu kodu inceleyip kendi sisteminize uyarlayarak çözüme ulaşabilirsiniz. Bir siteden veri çekmenin birden fazla yolu var ama preg_match_all kullanıldığını görünce aklıma eskiden yazdığım bir bot geldi Umarım faydalı olur.
     $content = preg_replace("/s+/", " ", $content); // boşlukları temizle
     $content = preg_replace("/r|n/", " ", $content); // yeni satırları temizle
     $content = preg_replace("/t+/", "", $content); // tabları temizle
     $content = preg_replace("/<scriptb[^>]*>(.*?)</script>/is", "", $content); // javascript kodlarını temizle
     $content = trim($content); // başta ve sonda kalan boşlukları temizle
    
           return $content; // Sonuç döndür
    
    function curl_search($first, $last, $content){ // $content parametresi içinde, $first ve $last parametreleri ile gelen değerler arasındaki veriyi bulup sonuç döndürür.
            @preg_match_all('/' . preg_quote($first, '/').'(.*?)'. preg_quote($last, '/').'/i', $content, $m);
            return @$m[1];
        }
    
        $content = curl_connect("https://www.facebook.com"); // fonksiyon ile bağlandık 
        $page_title = curl_search('<title id="pageTitle">', '</title>', $content); // Gelen içerik içinde arama yaparak html sayfa başlığını ayıklıyoruz. Sonuç diziye aktarılacak.
        $post_titles = curl_search(' id="profile_pic_header_100009166867451" /><span>', '<', $content); // Gelen içerik içinde arama yaparak başlıkları ayıklıyoruz. Sonuç diziye aktarılacak.
        $post_button_wrappers = curl_search('<div class="post_element_info_footer_read_more">', '</div>', $content); // Gelen içerik içinde arama yaparak buton alanlarını ayıklıyoruz. Sonuç diziye aktarılacak.
    
        echo "<h1>".$page_title[0]."</h1><hr>";
        echo $post_titles[0];
    Not: Bu kodlar 2016-2017 yılları arasında geliştirilmiş olan bir yazılımının konu ile alakalı olan kısmından bir kesittir. Buradaki kodların sizin sisteminizde çalışması için kendinize göre gerekli düzenlemeleri yapmanız gerekmekte ben fikir vermesi açısından buraya bırakıyorum
  • 13-07-2019, 11:42:10
    #9
    Hocam ? Isaretini kaldır öyle bir denemesini yapabilir misin