• 02-12-2015, 20:37:30
    #1
    Web sitesini geliştirdiğim bir haber sitesi için yazdığım haber botu. Bot deyince otomatik çekip ekleyen türden değil, içerikleri listeliyorsunuz, içinden eklemek istediğinizi manuel olarak ekliyorsunuz. Tabi cronjob çalıştırarak otomatik eklemesini de yapabilirsiniz, temel burada, geliştirmesi sizde.

    Çalışma mantığı: Basit şekilde linkleri alıyoruz ve linkleri okuyup içeriklerini parçalıyoruz. $sayfa = file_get_contents(“http://www.iha.com.tr/kahramanmaras-haberleri/”); kısmındaki adresi içeriğini çekmek istediğiniz yerel haber linki ile değiştirin ve o il için yerel haberleri listelesin. Adresler zaten İHA sitesinde mevcut.

    Örnek: Ankara için yazmanız gereken adres: http://www.iha.com.tr/ankara-haberleri/

    <?php
    	$sayfa = file_get_contents("http://www.iha.com.tr/kahramanmaras-haberleri/");
    		
    	// Üstteki 4 Haber
    	$a = '/<ul class=\"lastnews mtop2\">(.*?)<\/ul>/si';
    	preg_match_all($a,$sayfa,$aa);
    	$aaa = strip_tags($aa[1][0],"<a>");
    	preg_match_all('#<a href="(.*?)" title="(.*?)">(.*?)</a>#s',$aaa,$aaaa);
    	$a1 = $aaaa[1];
    	
    	// Manşetteki Haberler
    	$b = '/<ul class=\"nums yhnum\">(.*?)<\/ul>/si';
    	preg_match_all($b,$sayfa,$bb);
    	$bbb = strip_tags($bb[1][0],"<a>");
    	preg_match_all('#<a href="(.*?)" title="(.*?)">(.*?)</a>#s',$bbb,$bbbb);
    	$b1 = $bbbb[1];
    	
    	// Manşet Altı Haberler
    	$c = '/<ul class=\"col full\">(.*?)<\/ul>/si';
    	preg_match_all($c,$sayfa,$cc);
    	$ccc = strip_tags($cc[1][0],"<a>");
    	preg_match_all('#<a href="(.*?)" title="(.*?)">(.*?)</a>#s',$ccc,$cccc);
    	$c1 = $cccc[1];
    	
    	// Diğer Haberler
    	$d = '/<ul class=\"related\">(.*?)<\/ul>/si';
    	preg_match_all($d,$sayfa,$dd);
    	$ddd = strip_tags($dd[1][0],"<a>");
    	preg_match_all('#<a href="(.*?)" title="(.*?)">(.*?)</a>#s',$ddd,$dddd);
    	$d1 = $dddd[1];
    	
    	$yazdir = array_merge($a1,$b1,$c1,$d1); // Tüm Linkleri Tek Bir Diziye Aldım
    	$dizitoplam = count($yazdir); // Dizide toplam kaç eleman var
    
    	for ($x = 0; $x < $dizitoplam; $x++) {
    		echo "Sıra:".$x."<br>";
    		$haber = file_get_contents($yazdir[$x]);
    	
    		// Haberin Tarihi
    		$tarihal = '/<span class=\"newsdate\">(.*?)<\/span>/si';
    		preg_match_all($tarihal,$haber,$tarih);
    		$tarihyaz = $tarih[1][0];
    		echo "Tarih: ".$tarihyaz."<br>";
    	
    		// Haberin Bailığı
    		$baslikal = '/<h1 class=\"page-tit darkblue\" style=\"margin-bottom:12px;\">(.*?)<\/h1>/si';
    		preg_match_all($baslikal,$haber,$baslik);
    		$baslikyaz = $baslik[1][0];
    		echo "Başlık: ".$baslikyaz."<br>";
    	
    		// Haberin Görseli
    		$resimal = '/<div class=\"imagealign1\">(.*?)<\/div>/si';
    		preg_match_all($resimal,$haber,$resim);
    		$yaz = $resim[1][0];
    		$yaz1 = strpos($yaz,'"'); // Söz diziminde " karakterinden önce kaç karakter var
    		$yaz2 = substr($yaz,$yaz1+1); // ilk " karakterinden sonraki kısım
    		$yaz3 = strpos($yaz2,'"'); // ikinci " karakterinnden önce kaç karakter var
    		$resimyaz = substr($yaz,$yaz1+1,$yaz3);
    		echo "Resim Adresi: ".$resimyaz."<br>";
    	
    		// Haber İçeriği
    		$icerikal = '/<div class=\"editor1y\">(.*?)<\/div>/si';
    		preg_match_all($icerikal,$haber,$icerik);
    		$icerikyaz = $icerik[1][0];
    		echo "Haber İçeriği: ".$icerikyaz."<hr>";
    	}
    ?>
  • 03-12-2015, 12:53:42
    #2
    paylasım için sagolun aksam evde deneyeceğim
  • 03-12-2015, 14:19:40
    #3
    halil2233 adlı üyeden alıntı: mesajı görüntüle
    paylasım için sagolun aksam evde deneyeceğim
    paylaşmak güzeldir, güle güle kullanın