• 18-09-2018, 15:19:46
    #1
    Merhaba,


    Bir marka verisi oluşturmak istiyorum ve markaların bulunduğu bir web adresi de mevcut. Bu adresten verileri tek tek almak yerine bir php kod yardımıyla hepsini text dosyasına veya tarayıcıya yazdırmak istiyorum.


    Veri çekilebilecek Örnek site



    Bu sitedeki firma isimlerini tek tek nasıl yazdırabilirim? Teşekkürler.
  • 18-09-2018, 15:22:25
    #2
    PM atıldı.
  • 18-09-2018, 15:40:46
    #3
    Ücretsiz olarak mantığı söyleyebilecek varsa memnun olurum arkadaşlar. Ben zaten tek sayfa halinde veriyi çekebiliyorum ama sayfa çok olduğu için farklı alternatif gerekiyor sanırım. Teşekkürler.
  • 18-09-2018, 15:47:31
    #4
    for döngüsü kullanabilirsin sayfa yapısı ile çok iyi çalışacaktır for döngüsü.
  • 18-09-2018, 15:48:59
    #5
    Mantık için yardımcı olayım öncelikle son sayfanın numarasını bul. Bunu da regex ile yapabilirsin
    <span class="page-text">
                Toplam
                <strong>139</strong>
                sayfa içerisinde
                <strong>1</strong>.
                sayfayı görmektesiniz.
            </span>
    Buradan sayfa sayısını aldıktan sonra for döngüsü ile sırasıyla sayfaları çekeceksin ve her sayfayı parçalayacaksın. Zaten bir sayfayı çekebiliyorum dediğin için onun detayına girmeyeceğim.Bir örnek vereyim daha iyi anlarsın.

    $toplamsayfasayisi=139; //bunu ister elinle gir istersen de sayfadan regex ile çek.
    for($i=1;$i<=$toplamsayfasayisi;$i++){
     $siteadresi="http://www.sikayet.com/firmalar/".$i;
     yapilacakIslem($siteadresi);
    }
  • 18-09-2018, 15:49:59
    #6
    Bundan sonrasını halldersiniz heralde.
    Veri tabanına veya txt olarak veriyi kayıt ederbilirsiniz.

    <?php
    $sayfa = $_GET['sayfa'];
    $sonraisayfa = $sayfa +1;
    $site        = file_get_contents('http://www.sikayet.com/firmalar/'.$sayfa);
    preg_match_all('@title="(.*?)">
                    <img src="(.*?)" width="(.*?)" height="(.*?)">@si',$site,$baslik_al);
    for ( $i = 0; $i <= 49; $i++ ) {
    echo "<li>";
    echo($baslik_al[1][$i]);
    echo "</li>";
    }
    ?>
    
    <meta  http-equiv="refresh" content="5;URL=dene.php?sayfa=<?=$sonraisayfa?>">
    Veri tabanına işlerken 5 saniye az gelirse 10 yapın.
  • 18-09-2018, 15:58:38
    #7
    Scorpion2763 adlı üyeden alıntı: mesajı görüntüle
    Bundan sonrasını halldersiniz heralde.
    Veri tabanına veya txt olarak veriyi kayıt ederbilirsiniz.

    <?php
    $sayfa = $_GET['sayfa'];
    $sonraisayfa = $sayfa +1;
    $site        = file_get_contents('http://www.sikayet.com/firmalar/'.$sayfa);
    preg_match_all('@title="(.*?)">
                    <img src="(.*?)" width="(.*?)" height="(.*?)">@si',$site,$baslik_al);
    for ( $i = 0; $i <= 49; $i++ ) {
    echo "<li>";
    echo($baslik_al[1][$i]);
    echo "</li>";
    }
    ?>
    
     <meta  http-equiv="refresh" content="5;URL=dene.php?sayfa=<?=$sonraisayfa?>">
    Veri tabanına işlerken 5 saniye az gelirse 10 yapın.

    Çok teşekkür ederim.
  • 18-09-2018, 16:05:15
    #8
    <?php
    
    $taranacak_sayfa_sayisi = 130;
    $ana_sayfa = "http://www.sikayet.com/firmalar/";
     
    for($o = 1; $o < $taranacak_sayfa_sayisi; $o++) {
    
    $sayfa = file_get_contents($ana_sayfa.$o);
    preg_match('@<ul class="list-six">(.*?)</ul>@si',$sayfa,$ul_li);
    preg_match_all('@<li>(.*?)</li>@si',$ul_li[1],$li);
     
    foreach ($li[1] as $key => $value) {
    preg_match('@title="(.*?)"@si',$value,$adi);
    $firma_adi[] = $adi[1];
    }
    }
    
    print_r ($firma_adi);
    // Çıktı hepsinin tek seferde isimleri alabilirsin ,
    [0] => Aviva Mobilya
    [1] => Cihan Elektronik
    [2] => Desen Halı
    [3] => Dresscholic.com
    [4] => Eti Gıda
    [5] => Gardenya Danışmanlık
    ................................................
    [6449] => Uggsbootsturkey
  • 19-09-2018, 17:20:52
    #9
    Aşağıdaki hatayı alıyorum nedir acaba sıkıntısı?

    Parse error:  syntax error, unexpected '<' in C:\xampp\htdocs\veri.php on line 9
    OnurTasci adlı üyeden alıntı: mesajı görüntüle
     
    <?php
    
    $taranacak_sayfa_sayisi = 130;
    $ana_sayfa = "http://www.sikayet.com/firmalar/";
     
    for($o = 1; $o < $taranacak_sayfa_sayisi; $o++) {
    
    $sayfa = file_get_contents($ana_sayfa.$o);
    preg_match('@<ul class="list-six">(.*?)</ul>@si',$sayfa,$ul_li);
    preg_match_all('@<li>(.*?)</li>@si',$ul_li[1],$li);
     
    foreach ($li[1] as $key => $value) {
    preg_match('@title="(.*?)"@si',$value,$adi);
    $firma_adi[] = $adi[1];
    }
    }
    
    print_r ($firma_adi);
    // Çıktı hepsinin tek seferde isimleri alabilirsin ,
    [0] => Aviva Mobilya
    [1] => Cihan Elektronik
    [2] => Desen Halı
    [3] => Dresscholic.com
    [4] => Eti Gıda
    [5] => Gardenya Danışmanlık
    ................................................
    [6449] => Uggsbootsturkey