• 09-03-2017, 16:34:26
    #1
    Arkadaşlar merhabalar, danışmak istediğim bir konu var yardımcı olacak arkadaş varsa çok minnettar kalacağım. Aşağıda ki kodlar ile istediğim sitenin ürün görsellerini çektirip alt alta sıralamayı başardım.

    İncelediğinizde de göreceksiniz ki: link.com/urun.html linkine girip ilgili görsel divinden url'yi tutup bana tablo olarak alt alta getiriyor.

    Fakat burda ki gibi 10 resimlik iş değil, elimde botta ki mantıkta konu urlsi olarak 10bin kadar url var. Tek seferde hepsini çekmek mümkün olmasa bile 500er veya 1000er hali ile çektirmem mümkün mü? Nasıl başarabilirim bunu.

    Sürekli $url1, $url2 değişkenlerinin içinde yazdığım linkleri değiştirerek çekiyorum. 10bin resim olduğu düşünülürse sürekli değiştir çek işlemi ile sanırım yıllarımı alacaktır.

    Nasıl kolay kılabilirim bunu? En kötü ihtimal ile 250'şer çekebilsem bile yeterli. Linkleri tablodan kopyalayıp excel dosyasına yapıştırıyourm tüm yaptığım bu sadece.

    Yani sürekli böyle linkleri değiştirerek vs mi yapmam lazım bu olayı. Listemi bir text kutusuna yapıştırsam ordan hesaplayıp çekip listelese vs. bi imkanı yok mu?

    Yardımcı olabilirseniz çok sevniriim.

    Botun çalıştığı demo linki için tıklayınız.


    <?php
    
    function getir($baslangic, $son, $cekilmek_istenen)
    {
        @preg_match_all('/' . preg_quote($baslangic, '/') .
        '(.*?)'. preg_quote($son, '/').'/i', $cekilmek_istenen, $m);
        return @$m[1];
    }
    
    $url1 = "link.com/urun.html";
    $url2 = "link.com/urun.html";
    $url3 = "link.com/urun.html";
    $url4 = "link.com/urun.html";
    $url5 = "link.com/urun.html";
    $url6 = "link.com/urun.html";
    $url7 = "link.com/urun.html";
    $url8 = "link.com/urun.html";
    $url9 = "link.com/urun.html";
    $url10 = "link.com/urun.html";
    
    
    $icerik = file_get_contents($url1);
    $urun_barkod1 = getir('<a class="MagicZoom" id="productMainImageMagicZoom" href="','"',$icerik);
    $icerik = file_get_contents($url2);
    $urun_barkod2 = getir('<a class="MagicZoom" id="productMainImageMagicZoom" href="','"',$icerik);
    $icerik = file_get_contents($url3);
    $urun_barkod3 = getir('<a class="MagicZoom" id="productMainImageMagicZoom" href="','"',$icerik);
    $icerik = file_get_contents($url4);
    $urun_barkod4 = getir('<a class="MagicZoom" id="productMainImageMagicZoom" href="','"',$icerik);
    $icerik = file_get_contents($url5);
    $urun_barkod5 = getir('<a class="MagicZoom" id="productMainImageMagicZoom" href="','"',$icerik);
    $icerik = file_get_contents($url6);
    $urun_barkod6 = getir('<a class="MagicZoom" id="productMainImageMagicZoom" href="','"',$icerik);
    $icerik = file_get_contents($url7);
    $urun_barkod7 = getir('<a class="MagicZoom" id="productMainImageMagicZoom" href="','"',$icerik);
    $icerik = file_get_contents($url8);
    $urun_barkod8 = getir('<a class="MagicZoom" id="productMainImageMagicZoom" href="','"',$icerik);
    $icerik = file_get_contents($url9);
    $urun_barkod9 = getir('<a class="MagicZoom" id="productMainImageMagicZoom" href="','"',$icerik);
    $icerik = file_get_contents($url10);
    $urun_barkod10 = getir('<a class="MagicZoom" id="productMainImageMagicZoom" href="','"',$icerik);
    $icerik = file_get_contents($url11);
    ?>
    
    <table border="1">
    <tbody>
    <tr>
    <td><b>URL</b></td>
    </tr>
    <td><?php echo "" . $urun_barkod1[0] . "<br"; ?></td></tr>
    <td><?php echo "http:" . $urun_barkod2[0] . "<br"; ?></td></tr>
    <td><?php echo "" . $urun_barkod3[0] . "<br"; ?></td></tr>
    <td><?php echo "http:" . $urun_barkod4[0] . "<br"; ?></td></tr>
    <td><?php echo "" . $urun_barkod5[0] . "<br"; ?></td></tr>
    <td><?php echo "http:" . $urun_barkod6[0] . "<br"; ?></td></tr>
    <td><?php echo "" . $urun_barkod7[0] . "<br"; ?></td></tr>
    <td><?php echo "http:" . $urun_barkod8[0] . "<br"; ?></td></tr>
    <td><?php echo "" . $urun_barkod9[0] . "<br"; ?></td></tr>
    <td><?php echo "http:" . $urun_barkod10[0] . "<br"; ?></td></tr>
    </tbody>
    </table>
  • 09-03-2017, 20:24:26
    #2
    Urlleri bir diziye atıp foreach ile tek tek çektirebilirsiniz. set_time_limit(0) yaparsanız 10.000 url'ye tek tek girer 5-6 saatte çeker diye tahmin ediyorum internet hızınıza bağlı olarak
  • 09-03-2017, 21:12:40
    #3
    CihanAksoy adlı üyeden alıntı: mesajı görüntüle
    Urlleri bir diziye atıp foreach ile tek tek çektirebilirsiniz. set_time_limit(0) yaparsanız 10.000 url'ye tek tek girer 5-6 saatte çeker diye tahmin ediyorum internet hızınıza bağlı olarak
    Hocam dediğiniz yöntem ile yaparsam sayfa 503 hatası vermeyecek doğru mu anladım.
  • 10-03-2017, 15:12:38
    #4
    <?php 
    set_time_limit(0);
    error_reporting(0);
    $user = "root"; //veritabanı kullanıcı adı
    $pwd = ""; //veritabanı şifresi
    $host = "localhost"; //mysql server
    $db = "senindb"; //veritabanı adı
    $conn = mysql_connect($host,$user,$pwd) or die("MySQL sunucusuna baglanilamadi!!!".mysql_error());
    mysql_select_db($db) or die("Veritabani secilemedi!!!".mysql_error());
    $sonuc = mysql_query("select * from veritabanı_tablo_adi");
    echo "<table>";
    echo "<tr>";
    echo "<th>Ürün Adı</th><th>Fiyat</th><th>r1</th><th>r2</th><th>r3</th><th>Kategori</th><th>Detay</th>";
    echo "</tr>";
     while($oku = mysql_fetch_assoc($sonuc))
        {
    $site = file_get_contents($oku['veritabanındaki_url_adres_sütunu']);
    $urunadi = explode ('<h1>
                            <span>',$site);
    $urunadi = explode ('</span>',$urunadi[1]);
    $kat = explode('<ul class="breadcrumb">',$site);
    $kat = explode ('</ul>',$kat[1]);
    $detay = explode('<ul class="teknikDetay">',$site);
    $detay = explode ('</ul>',$detay[1]);
    $fiyat = explode ('<span class="right_line indirimliFiyat" id="indirimliFiyat">',$site);
    $fiyat = explode ('</span>',$fiyat[1]);
    $r1 = explode ('"zoomImage" : "',$site);
    $r1 = explode ('"',$r1[1]);
    $r2 = explode ('"zoomImage" : "',$site);
    $r2 = explode ('"',$r2[2]);
    $r3 = explode ('"zoomImage" : "',$site);
    $r3 = explode ('"',$r3[3]);
    $r1 = $r1[0];
    $r2 = $r2[0];
    $r3 = $r3[0];
    echo "<tr>";
    echo "<td>".$urunadi[0]."</td>";
    echo "<td>".strip_tags($fiyat[0])."</td>";
    $file_headers = @get_headers($r1);
    if($file_headers[0] == 'HTTP/1.1 404 Not Found') {
        $exists = false;
    }
    else {
        echo "<td>".$r1."</td>";
    }
    $file_headers = @get_headers($r2);
    if($file_headers[0] == 'HTTP/1.1 404 Not Found') {
        $exists = false;
    }
    else {
        echo "<td>".$r2."</td>";
    }
    $file_headers = @get_headers($r3);
    if($file_headers[0] == 'HTTP/1.1 404 Not Found') {
        $exists = false;
    }
    else {
        echo "<td>".$r3."</td>";
    }
    
    echo "<td>".strip_tags($kat[0])."</td>";
    
    echo "<td>".strip_tags($detay[0])."</td>";
    echo "</tr>";
    
    
    	}
    
    ?>
    ilk olarak ilgili siteden sitemap ile tüm ürün urlllerini alıp bir excele kaydet.sonra bu exceli veritabanında bir tablo oluşturup import et. İlgili kısımları kendine göre düzenle örneğin benim yaptığım bölümde ilgili ürünün 2. resmi ve 3. resmi varsa alıyor yoksa boş bırakıyor.
    Kendine göre düzenledikten sonra bilgisayarı açık bırakıp eşinle dostunla kahve içip yemek yiyecek kadar vaktin olur 10.000 üründe baya sürüyor çünkü bende çekmiştim bu kodla.vpsin varsa daha hızlı çözersin.Kolay gelsin.