Php ile RSS’lerden Veri Çekmek ve Kaydetmek
Birçok yerde bunun nasıl yapıldığını öğrenmeye çalışan kullanıcılar
görüyorum. Bunun üzerine sizlere php ile RSS içeriklerinden nasıl veri
çekileceğini ve bunların nasıl veritabanına kaydedilebileceğine dair örnek
uygulama vereceğim.
Uygulamamız oldukça kolay ve anlaşılabilir şekilde kodlanacaktır. Farklı
şekillerde oluşturulmuş xml veya rssler’e örneği baz alarak kolayca
geliştirebileceğinizi düşünüyorum.
Şimdi geçelim php ile rsslerden veri çekmeye. Öncelikle bir veritabanı
oluşturuyoruz.
CREATE TABLE `icerik` ( `id` int(8) NOT NULL auto_increment, `url` text NOT NULL, `baslik` text NOT NULL, `haber` text NOT NULL, UNIQUE KEY `id` (`id`), UNIQUE KEY `url` (`url`(850)) ) ENGINE=MyISAM DEFAULT CHARSET=latin5 AUTO_INCREMENT=1 ;
Rss’den verileri cekip yukarıda oluşturduğumuz veritabanına kayıt işlemine
gerçekleştirecek php kodumuz:
<? include "ayar.php"; ?> <? function cevir ($url,$to="windows-1254",$from="utf8"{ if($to=="windows-1254" && $from=="utf8"
{ $str_array = array( chr(196).chr(177) => chr(253), chr(196).chr(176) => chr(221), chr(195).chr(182) => chr(246), chr(195).chr(150) => chr(214), chr(195).chr(167) => chr(231), chr(195).chr(135) => chr(199), chr(197).chr(159) => chr(254), chr(197).chr(158) => chr(222), chr(196).chr(159) => chr(240), chr(196).chr(158) => chr(208), chr(195).chr(188) => chr(252), chr(195).chr(156) => chr(220) ); return str_replace(array_keys($str_array), array_values($str_array), $url); } return $url; } $f = "http://rss.hurriyet.com.tr/rss.aspx?sectionId=1"; $data=file_get_contents($f); $bol = explode("<item>",$data); for ($i=1;$i<=count($bol)-1;$i++) { preg_match("''si",$bol[$i], $baslik); preg_match("' <link>(.*?)</link>'si",$bol[$i], $link); preg_match("'<description>(.*?)</description>'si",$bol[$i], $aciklama); $link= $link[1]; $baslik = cevir($baslik[1]); $aciklama = cevir($aciklama[1]); echo "Link: ".$link." Başlık: ".$baslik." Açıklama: ".$aciklama." "; $kayit = mysql_query("INSERT INTO icerik (id, url, baslik, haber) VALUES ('', '$link', '$baslik', '$aciklama')"
; } ?>
Koda İlişkin Açıklamalar:
ayar.php dosyamız veritabanına bağlantının gerçekleştiği dosya olacaktır. Bunu
scriptinize göre düzenleyebilirsiniz.
Burada örnek olarak hürriyet.com.tr’den bir rss kaynağını gösterdim.
İstediğiniz rss adresini $f = “http://rss.hurriyet.com.tr/rss.aspx?sectionId=1″;
bölümünü düzenleyerek oluşturabilirsiniz.
Yukarıda yazmış olduğum kod ile rss’de yer alan title, link ve description
alanları çekilebilmektedir. Kullanacağınız rss’nin kaynak kodlarına bakarak
kendinize göre düzenlemeler yapabilirsiniz. RSS’lerde Türkçe Karakter problemi
yaşayabilirsiniz diye de function cevir bölümü ile rss’den aldığımız içeriği
çeviriyoruz ve daha sonra oluşturmuş olduğumuzu veritabanına kaydetmesini
sağlıyoruz.
Bu şekilde hazırlamış olduğunuz dosyayı cronjob ile zamanlı olarak otomatik
olarak çalıştırılmasını sağlayarak içeriğinizi sürekli olarak güncel tutulmasını
sağlayabilirsiniz.
Daha sonra birden fazla RSS kaynağını kullanarak tek bir dosya üzerinden nasıl
veriçekebileceğimize dair örneği yayınlayacağım.
Kolay gelsin.
