Php ile Yerel Haber Botu Yapmak | Haberler.com

Neredeyse geleneksel bir hal alan php ile hazırlamış olduğum botları Beşiktaş'ın galibiyetlerine adamıştım. Bu hazırladığım botu Galatasaray ile yapılan derbi için hazırlamıştım ama galibiyet sergileyemeyince paylaşmamıştım. O maçın sinirini yeni atmış olmalıyım ki bu botu paylaşmaya karar verdim :)

Şimdi botumuzun bazı özellikleri var onları belirtmek istiyorum öncelikle. Bot haberler.com sitesini Rss kaynağından bilgileri çekmektedir. Böylece son haberleri almış oluyoruz. Bu bot son eklenen haberleri almaktadır. Haber siteniz var site böyle son haberleri çeken botları kullanarak sitenizi daha güncel tutabilirsiniz.

Bot, 81 ildeki yerel haberleri çekmektedir. Böylelikle yerel haber sitesi olanların işine çok yarayacaktır. Botu çalıştırdığınızda önce sizden bir il seçmenizi isteyecek sonrasında ise haberleri yayınlayacaktır. Sadece göstermek için ben bu şekilde hazırladım ama siz kendinize göre ayarlayabilirsiniz. Kodlamayı olabildiğince basit tuttuğumdan dolayı düzenlenmesi çok kolaydır.

İlk önce geleneksel olan cURL ile oluşturduğumuz siteye bağlantımızı sağlayacak olan fonksiyonumuzu yazalım.

Function Baglan($link){
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$link);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_REFERER,"http://www.yandex.com.tr");
$Curl = curl_exec($ch);
curl_close($ch);
return $Curl;
}

Bağlantı işlemini yukarıdaki gibi yaptıktan sonra şimdi kategorilerimizi de sitenin bir bölümünden çekelim. Aslında bunu manuel olarak el yordamı ile de yazabiliriz ama üşendiğim için siteden çekme kararı aldım :D

<?php
$Kategori = Baglan("http://haberler.com/webmasters/?sayfa=yerelhaber");
preg_match_all('@<option value="(.*?)" >(.*?)</option>@si',$Kategori,$Adi);

echo '<form action="" method="post">
<select name="kategoriler" id="">';
for($k=0; $k <=80; $k++){
echo '<option value="'.Seo($Adi[1][$k]).'">'.$Adi[1][$k].'</option>';
}
echo'</select>';
echo'<button type="submit">Verileri Çek</button>';
echo'</form>';
?>

Yukarıdaki gibi kategorileri çekmiş oluyoruz. Sonrasında ise bir form oluşturup sayfa içi post yapmasını istiyoruz. Dikkat ederseniz bir de özel fonksiyon oluşturdum bu gelen ile ait değerin seo olarak yani Türkçe karakterlerin ve diğer karakterlerin düzenlenmesini belirttiğin fonksiyon var. Bu fonksiyonda şu şekilde olacak;

function Seo($str){
$str=str_replace("Ş","S",$str);
$str=str_replace("ş","s",$str);
$str=str_replace("Ş","s",$str);
$str=str_replace("Ç","C",$str);
$str=str_replace("ç","c",$str);
$str=str_replace("Ö","O",$str);
$str=str_replace("ö","o",$str);
$str=str_replace("Ğ","G",$str);
$str=str_replace("ğ","g",$str);
$str=str_replace("Ü","U",$str);
$str=str_replace("ü","u",$str);
$str=str_replace("ı","i",$str);
$str=str_replace("İ","i",$str);
$str=preg_replace("/[^A-Za-z0-9\s]/"," ",$str);
$str=str_replace(" ","-",trim($str));
$str=preg_replace('/([-]+)/','-',$str);
$str=strtolower($str);
return $str;
}

Yukarıdaki kodu bağlan fonksiyonunun üstüne yazabilirsiniz. Böylece verilerimiz tam anlamıyla çalışır durumda olacaktır.

Bu adımı da geçtikten sonra post işlemi gerçekleştiğinde şunları yap diyebileceğimiz if koşulumuzda post'u tanımlıyoruz. Buda şu şekilde olacak;

if($_POST){
// Kodlar burada olacak
}

Yukarıdaki işlemleri kategorileri çektikten sonra yazıyoruz. Şimdi yazacağımız bütün kodları açıklama satırının bulunduğu alana yazacağız.

<?php
$KategoriAdi = $_POST["kategoriler"];
$Site = Baglan("http://rss.haberler.com/rsskonu.asp?konu=$KategoriAdi");
preg_match_all('@<link>(.*?)</link>@si',$Site,$Link); // Rss Son haber linklerini aldık.
for($a=2; $a <= 21; $a++){ // 2 - 21
$Haberbaglan = Baglan($Link[1][$a]);
preg_match_all('@<h1 itemprop="headline" id="haber_baslik">(.*?)</h1>@si',$Haberbaglan,$HaberBaslik);
preg_match_all('@<h2 itemprop="description" (.*?)">(.*?)</h2>@si',$Haberbaglan,$HaberKisa);
preg_match_all('@<span id ="habermetin" class="haber_metni" itemprop="articleBody">(.*?)</span>@si',$Haberbaglan,$HaberMakale);

echo '<h2>'.$HaberBaslik[1][0].'</h2>';
echo '<h4>'.$HaberKisa[2][0].'</h4>';
echo ''.trim(strip_tags($HaberMakale[1][0],"<b></b><p></p><u></u>")).'';
echo "<hr>";
}
?>

Evet .. Şimdi Rss kod kaynağına bağlandık ve oradan bilgileri aldık. Yeni adresi alıp oradan da makale içine girip bilgileri aldık. Böylece son haberleri çeken bir bot hazırlamış olduk. Gelen haberdeki html taglarından kurtulmak için ise strip_tags kullandık. İzin vereceğimiz html kodlarını da bir tırnak işareti içinde belirttik. Siz istediğiniz html kodlarına izin vermek için o alanı düzenleyebilirsiniz. Örneğin ul li yapısı gibi.

Not: Haber siteleri haberleri ajanslardan aldığı için haberler telif ile korunmaktadır. Buradaki botta yer alan bot ise sadece eğitim için hazırlanmıştır. Sitenizde kullanacağınız zaman makale verileri çekilirken sonuna haberler.com sitesini kaynak olacak göstermeniz gerekmektedir. Hatta bunu kullanırken haber vermenizi de öneririm.
EK DOSYALARI İNDİR (172)
DEMO YOK
- 26.09.2013 / 18:39:15 2

Sosyal Medya Paylaşım Alanı

Bunlarda İlginizi Çekebilir

5:59 Javascript

Ekran Çıktısını Yazıcıya Yollamak

Kategori: Javascript | 03.05.2013
Genel Makaleler

Nereden Nereye Geldik | Site Geçmişi Hakkında

Kategori: Genel Makaleler | 04.06.2013
3:18 Php Dersleri

Sqrt Functionu İle Sayıların Kökünü Almak

Kategori: Php Dersleri | 03.05.2013
12:13 Php Dersleri

PDO ile MySQL Veri Tabanından Veri Listeleme

Kategori: Php Dersleri | 04.06.2014
3:05 Html Dersleri

Msn ile Canlı Destek Hattı Yapma

Kategori: Html Dersleri | 03.05.2013

Yorum Listesi (9) # YorumYap

  • anonim (27.09.2013 - 01:18:34)
    Arkadas bu ne bot aşkıdır ya..
  • ibrahim Çevrük (27.09.2013 - 02:08:08)
    Can sıkıntısı yapılacak en iyi uygulama ;)
  • Mert Ali (27.09.2013 - 10:32:23)
    Son zamanlarda hep dersleriniz video tarzı değil bunun nedeni nedir acaba?
  • ibrahim Çevrük (27.09.2013 - 23:12:45)
    Vakit sorunum olduğundan kaynaklanıyor. Birazda tatilin verdiği gevşeklik diyelim :) Kısa zamanda videolu olarak dersler devam edecek.
  • Alper (29.09.2013 - 19:06:39)
    Hocam bir iki ders isteğinde bulunmuştum günlerdir takip ediyorum farklı faklı dersler ekleniyor fakat istekte bulunduğum dersler eklenmiyor (tabiki mecbur değilsiniz sadece ricamızdı sizden) eğer zamanınız olursa eklerseniz çok sevinirim, şimdiden saygılarımı sunar başarılarınızın devamını dilerim.
  • süpersin (20.10.2013 - 14:02:30)
    ibrahim kardeşim yemin ederim tüm işlerimi senin sayende yapıyorum ve yine senin sayende kendi web sitemi binlerce lira harcamadan yaptım üstelik botları ile umarım bu site hep var olur ... reklamlarına bol bol tıklayacağım ... diğer arkadaşlarda tıklarlar ise seviniriz ...
  • mavericklance (05.12.2013 - 02:39:45)
    üstad öncelikle çalışmaların için tebrik ediyor ve verdiğin faydalı bilgiler için müteşekkirim.. ben haberler.com dan bursa haberlerini çektirip veritabanıma kayıt ettirmek istiyorum verdiğin kodları tek bir php sayfasına koyup biraz editlemeye çalıştım ama hiç anlamıyorum bu işten beceremedim.. yardımcı olabilirmisin?
  • DeAtHeR (05.02.2014 - 09:39:10)
    Mybb forum için bir giriş yapıp veri çeken bot yapabilir miyiz ?
  • umut erden (24.10.2015 - 09:24:30)
    Hocam seni takip ediyorum bir php eğitim videosundan öğrenemediklerimi hep senden öğreniyorum çok sağ ol hocam.

Hadi Sende Yorum Yap!

Yorum Gönderilmiştir. Onaylandıktan Sonra Mesajınız Yayınlanacaktır.