PHP ile BOT Yapımı ,DOM Tekniği ve WordPress Siteden Veri Çekimi 11

Bu anlatımı daha iyi anlayabilmek için biraz HTML DOM bilgisi gerekiyor.

Amaç:
Veri çekilmesi gereken adreste biraz dolaşıp bize gerekli alt sayfalardaki gerekli verileri çekmek.

Veri çekilmesi istenen adres: http://www.phpsorunu.com/2010/06

Gerekli olan kütüphane veya classlar :
PHP Simple HTML DOM Parser

http://simplehtmldom.sourceforge.net/index.htm

Anlatım :

[ad#orta]

Çekilmek istenen veri adresteki sayfadaki wordpress konuları.
sitenin HTML biçimine göre alınmak istenen veri belirleniyor ve buna göre yazılıyor. başka bir sitenin başka bir DOM yapısı olacağı için çekmek istediğiniz verilere göre değiştirmeniz gerekiyor.

Bot nasıl çalışıyor.

1. Verilen adrese gidiyor. ve POST classlı divlerin içindeki adresleri buluyor.
2. Daha sonra bulunan adresleri ziyaret edip konu başlığı ve konu içeriğini alıyor.

Geri kalan açıklamalar Aşağıdaki kodun içindedir.
Anlatamadığım bir yer olursa lütfen yorumlarınız ile belirtiniz.

<? 
include 'simple_html_dom.php'; // gerekli  class include edildi.
error_reporting(1);
 
$html = file_get_html('http://www.phpsorunu.com/2010/06/'); // html verisi çekilecek adres
 
foreach($html->find('div[class^="post"] h2 a') as $e){
// yukarıda her bir post class ı olan div in içinde  
// h2 tagını arıyoruz ve bunun içindeki 'a'  linkin href (yani referans adresini alıyoruz)
 
    $link = $e->href; //linkimizi bulduk
 
    $ic_sayfa = file_get_html($link); //botumuzu oraya gonderiyoruz
 
    foreach ($ic_sayfa->find('div[class^="post"]') as $ic) {
        //içerik yani konu sayfamızda gene post class lı dıvı buluyoruz
        //buldugumuz divin içindeki h1 tagının içindeki veri bizim başlığımız oluyor ve bunu başlık
 
 
        $baslik = $ic ->find ('h1',0) -> plaintext;
        $konular[]['baslik'] = $baslik; // konular dizimize (array) baslık olarak kayıt ediyoruz
        $icerik = '';
 
        // wordpresste ki br yerine p tagını kullandığı için (BU TAGLAR ÇEKECEĞİMİZ VERİ TÜRÜNE GÖRE DEĞİŞİR) aşağıda p taglarının içeriğini almamız gerekiyor her p tagı için döngümüzü yazıyoruz        
                        foreach ($ic -> find('p') as $icerikp){
            if ($icerikp -> hasAttribute('class')){
                // bize postmeta data gibi class ı p tagları gerekmediği için  gerekli kontrolleri yapıyoruz
            }
            else {
                 $icerik.=  $icerikp->outertext; }
            // classsız p taglarının outertext ile <p>içindeki yazı </p> çeklinde içerik değişkenimize kayıt ediyoruz.
 
                                }
                                //bütün p taglarımızı alıncayda konular dizimizin icine icerik bolumune atiyoruz.
                                $konular[]['icerik'] = $icerik;
 
    }
  }
 
 
// sira geldi ekranda gostertmesi veya istediginiz işlemin yapılmasına.
 
  foreach  ($konular as $konu ){
 
       echo '<div style="border: 3px solid navy; margin-top:10px;">';
       echo '<h2>'.$konu['baslik'].'</h2>';
           echo '<div>'.$konu['icerik'].'</div>';
           echo '</div>';
   }
 ?>

Herkese başarılar…

11 thoughts on “PHP ile BOT Yapımı ,DOM Tekniği ve WordPress Siteden Veri Çekimi

  1. Reply asım Tem 30,2010 20:01

    Hocam çalışmanız çok güzel ancak bunu wordpress tabanlı siteme nasıl entegre edebilirim yada nasıl kurmam gerekiyor görsel olarak anlatırsanız sevinirim çalışmalarınızda başarılar dilerim.

  2. Reply Hasan Huseyin İŞLE Tem 30,2010 22:38

    Biz bu dersimizde bir bot'un örnek olarak nasıl yapıldığını göstermeye çalıştık. Ayrıca WordPress zaten kendi kendine bir dünya hocam. Şu an için WordPress'e bunu entegre etme konusunda bir çalışmamız olmadı. WordPress yazılarımızı da yayınlamaya başlıyacağız ve eklenti yazımı konusunda yol katedeceğiz. Siz de buradan ilham alarak bunu sisteminize entegren etmeyide öğrenebilirsiniz. Çalışmalarınızda başarılar…

  3. Reply mehmet Eyl 20,2010 00:15

    Hmm güzel anlatım

  4. Reply sohbet Kas 26,2010 02:50

    Teşekkürler güzel anlatım elinize sağlık biraz uğraş ile güzel şeyler yapılabilinir.

  5. Reply Osman Kas 26,2011 14:16

    Sitenizi az önce r10 da tema satışınızda buldum. Hem tema hemde site gerçekten hoş olmuş. elimden geldiğince sitenizi takipte kalacağım 😉

  6. Reply elazig Şub 9,2012 08:41

    hocam peki başka yerden veri çekerken oradan çektiğimiz resmi kendi ftp me upload etmek istiyorum bunu nasıl yapabilirim hangi kod parçacığını kullanmalıyım

  7. Reply sohpet Nis 1,2012 23:21

    harika bi anlatım emeğinize sağlık sitenizi yeni buldum paylaşımlarınız için teşekkür ederim iyi çalışmalar.

  8. Reply oguz Nis 3,2012 23:43

    bunu wordpress e nasıl entegre ederiz. gerçi 2 sene önce yazılmış konu merakımı giderirseniz sevinirim 🙂

  9. Reply Ali May 7,2012 21:05

    Merhaba,

    Bu include edilen "simple_html_dom.php" bunu nasıl oluşturuyoruz. örnek verir misiniz.

  10. Reply Ömer Faruk Şub 3,2016 16:21

    Merhabalar yazınız için çok teşekkür ederim html dom parser konusunda çok az makale var. Bu konunuz güzel olmuş. Diyelimki çektiğiniz içerik sayısı 200 tane oldu. Sizin örneğinizden gidecek olursak iç sayfa sayısı 200 oldu. O zaman çok uzun sürede işlem yapıyor. Sunucu time out hatası veriyor. Nasıl bir yöntem kullanabilirz süreyi kısaltmak için ya da sunucuya yük bindirmeden bu işi halledebiliriz.

Leave a Reply