http://www.erdinckoc.com.tr/php-ile-wordpress-bot-yapimi-dom-tarzi.html
Erdinç Koç isimli arkadaşımız dom tarzı bot yapımıyla ilgili güzel bir makale paylaşmış. PHP Sorunu sitesinden çekiliyor veriler. simple_html_dom.php dosyasını da botun bulunduğu klasöre attım. Fakat kendi siteme uyarlamak istediğimde zaman aşımı uyarısı alıyorum. Acaba nerede hata yapıyorum? Kendisi WP bot paylaşımını ve desteğini bıraktığını açıklamış sitesinde. Yardımlarınız için şimdiden teşekkürler.
Kodlar:
include 'simple_html_dom.php'; // gerekli class include edildi.
error_reporting(1);
$html = file_get_html('http://www.onurunwebsitesi.com/'); // html verisi çekilecek adres
foreach($html->find('ul[id^="Haberler_Icerik"] li div[class^="Sag"] 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[id^="Yazi_Tekil"]') 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 ('div[class^="YaziBaslik"] div[class^="YaziBaslikIc"]',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 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 '';
}
?>