İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

Php ile RSS’lerden Veri Çekmek ve Kaydetmek

yagmayok

1
İyinet Üyesi
Katılım
25 Ocak 2005
Mesajlar
7,131
Reaction score
89
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. RSS ile çektiğimiz veriler buraya kaydedilecektir.

HTML:
CREATE TABLE `icerik` (
  `id` int(8) NOT lisanssız auto_increment,
  `url` text NOT lisanssız,
  `baslik` text NOT lisanssız,
  `haber` text NOT lisanssız,
  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:

PHP:
<?
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 bu içeriği veritabanına kaydetmesini sağlıyoruz.

Bu şekilde hazırlamış olduğunuz dosyayı cronjob ile otomatik olarak çalıştırılmasını sağlayarak içeriğinizi sürekli olarak güncel tutulmasını sağlayabilirsiniz.

Kaynak: http://www.o5m.net/php/php-ile-rsslerden-veri-cekmek-ve-kaydetmek.html

Kaynak göstererek yayınlayabilirsiniz.

Kolay gelsin.
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Üst