Merhaba arkadaşlar,
Haber sitelerinin veya diğer sitelerin rss olarak verdikleri bilgileri kendi sitenize çekmenize ilişkin bir uygulama yapacağız.
Bunun içn öncelikle rss hizmeti veren bir adrese ihtiyacınız var biz örnek olarak hürriyet gazetesini alalım
Sitenin en altında Rss iconunu görürsünüz
linki :
http://dosyalar.hurriyet.com.tr/rss/ Bu adresten biz sadece gündem haberlerini çekelim.
Models klasörüne __Haberler adında bir class tanımlıyoruz öncelikle
public class __Haberler
{
public string HaberBaslik { get; set; }
public string HaberAciklama { get; set; }
public string HaberLink { get; set; }
public string HaberResim { get; set; }
public string HaberKategori { get; set; }
}
Class da gördüğünüz gibi alacağımız alanları belirttik sadece rss de daha fazla alanlar var fakat ben sadece bunları alacağım için girdim
Şimdi Controller a geçelim Default indexde işlem yapacağım
public ActionResult Index()
{
WebClient webclient = new WebClient();
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
webclient.Encoding = Encoding.UTF8; // Türkçe karakter desteği için gerekli
string CekilenVeriler = webclient.DownloadString("http://www.hurriyet.com.tr/rss/gundem"); // gündeme ilişkink rss adresi
XDocument xmlhali = XDocument.Parse(CekilenVeriler);
XNamespace media = XNamespace.Get("http://search.yahoo.com/mrss/"); // Resimleri alabilmek için gerekli
var CekilenRSSFeed = (from x in xmlhali.Descendants("item")
select new __Haberler
{
HaberBaslik = ((string)x.Element("title")),
HaberAciklama = ((string)x.Element("description")),
HaberKategori = ((string)x.Element("category")),
HaberLink = ((string)x.Element("link")),
HaberResim = x.Element(media + "thumbnail") != null ? x.Element(media + "thumbnail").Attribute("url").Value : ""
});
return View(CekilenRSSFeed);
}
rss de belirtilen alanlar title, description, category, link, media bunları biz kendi class ımızda belirttiğimiz alanlara atıyoruz.
çektiğiniz rss de alanları kontrol edin siz yine de
Gelelim html kısmına
@foreach (var item in Model)
{
<div class="haberalan">
<a href="@item.HaberLink">
<img src="@item.HaberResim.Replace("file://", "http://")" />
<h3>@item.HaberBaslik</h3>
<span>@item.HaberAciklama</span>
<h6>@item.HaberKategori</h6>
</a>
</div>
}
rss de resimleri file olarak belirttikleri için ben sadece replace uyguladım sizin rss de farklı olabilir.
iyi çalışmalar.