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 ParserBuradan indirebilirsiniz.Anlatım :Çekilmek istenen veri adresteki sayfadaki wordpress konuları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 adresforeach($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 gonderiyoruzforeach ($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ıyoruzforeach ($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
içindeki yazı
ç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 ‘
‘;echo ‘
‘.$konu[‘baslik’].’
‘;
echo ‘
‘.$konu[‘icerik’].’
‘;
echo ‘
‘;
}?>