Kapat
Programlama 4.862 13

C# Web Sitesinden Veri Çekme İşlemi

PHP ile bir çok siteden basit bir şekilde veri çekip, sitelerimiz de kullanıyoruz. WordPress kullanırken bile veritabanımızdan veri çekmek için kod parçacıklarında veri çekmenin yararını görebiliyoruz. Bir çok haber sitesi de ajanslardan haber detaylarını çekerek yayın hayatlarını sürdürüyorlar. Böyle olunca bilgisayar programlarında da böyle bir sistemin olması hiçte fena olmaz diyerekten naçizane bildiklerimi bu yazımda paylaşacağım.

Kendi yaptığım uygulama olan MCK Film Arşivi programında da kullanmış olduğum yöntemde örnek kullanım olarak film bilgi sitelerinden form içerisinde yer alan metin kutularına veri çekip, veritabanına kayıt ettim. Yazı sonunda kodların kaynaklarını paylaşacağım. MCK Film Arşivi programında da göreceğiniz üzere Sinemalar.com ve Beyazperde’den verileri çekip metin kutularına ekledik.

İlk önce projemizi açıyoruz ve görsel düzenleme kısmına gelip aşağıdaki görselde yer alan yolu izlemeniz gerekiyor.

MCKTools1

MCKTools2

Yukarıdaki gibi görselde ki beyaz çerçeve içerisinde yer alan kutucuğa HTML yazınca en üstte çıkan HtmlAgilltyPack’ı seçip Install diyip projemiz içerisine ekliyoruz. Ekledikten sonra formumuzun görsel kısmına geçip bir kaç ekleme yapıyoruz. Örneğin butona tıkladığımızda bir siteden veri çeksin ve çektiği bu veriyi metin kutusuna(TextBox) aktarıyoruz. Eklememiz gereken bir kaç kütüphanemiz var bunları da namespace kısmına ekliyoruz.

try
{
string al = textBox1.Text;
Uri url = new Uri("http://www.diyanet.gov.tr/");
WebClient client = new WebClient();
client.Encoding = Encoding.UTF8;
string html = client.DownloadString(url);
HtmlAgilityPack.HtmlDocument dokuman = new HtmlAgilityPack.HtmlDocument();
dokuman.LoadHtml(html);
HtmlNodeCollection basliklar = dokuman.DocumentNode.SelectNodes("//span[@id='spAksam']|//div [@class='load-mores']");
foreach (HtmlNode baslik in basliklar)
{
//ListBox ekle
string veri = baslik.InnerText;
veri = veri.Replace("'", " ");
textBox1.Text = veri;

}
}
catch (Exception hata)
{

MessageBox.Show(hata.ToString());
}

 

 

Şimdi yukarıdaki kodları açıklayalım. Gerekli tanımlamalarımızı yaptıktan sonra new Uri kısmına veri çekeceğimiz siteyi yazıyoruz. Ben test etmek için diyanetin sitesinden akşam vakti namaz saatini çektim.

diyanet1

Çekmek istediğimiz verinin üzerine sağ tıklayıp Öğeyi İncele diyoruz ve aşağıda ki kod panelinden çıkan satırları Select.Nodes kısmına yazıyoruz.

Eğer sizin veri çekeceğiniz sitede div class=”icerik” kısmı yer alıyorsa kod içerisinde yer alan span yerine div, id yazan id, etiket kısmına da artık o sitede ne yazıyorsa onu yazıyoruz. Butona tıkladığımızda veriyi metin kutusuna aktarıyor. Sürekli güncellenecek bu yazımızda çeşitli popüler sitelerden veri çekme işlemlerini halledeceğiz.

{admin}

“C# Web Sitesinden Veri Çekme İşlemi” üzerine 13 yorum

  1. Mustafa dedi ki:

    Doğru düzgün makaleler yayımlayın!

    1. Mert Can dedi ki:

      Ne gibi bir rahatsızlık gördünüz hemen ilgileneyim.

      1. Mustafa dedi ki:

        Verilen komutlar hata verdi kendi bünyemde çözdüm.
        Kütüphane eklemeyi unutmamalarını da söylersen gelecek olan arkadaşlara yarar sağlar. Bu arada ön yargıyla yazılmış bir yorum değildi, yanlış anlama.

        1. Mert Can dedi ki:

          Dalgınlık sonucu bazı eksiklikler olabiliyor. Daha dikkatli olacağım, bildiriniz için teşekkür ederim.

        2. abdullah dedi ki:

          oğlum sen muhabbet tellalı mısın?

          bu konuyla ilgili tek bir harf dahi bilmezken aciz aciz google’a sorup öğrenmeye çalışırken bu adam bunu öğrenip buraya bizlere paylaşmış sen kütüphanelerin hatasından bahsediyorsun bi kütüphane hatasını bile çözemiyorsan sil o kullandığın tüm programları.

        3. Ömer Faruk dedi ki:

          Eline sağlık kardeşim. Güzel ve açıklayıcı anlatım. Adama bak Türkçe kaynak buluyor kütüphaneyi soruyor. Nasıl adamlar var arkadaş.

        4. Mustafa dedi ki:

          Kendi hatam olduğunu biliyorum, bi an öyle yazmışım ve yanlış yapmışım farkındayım ve Mertcan’la iletişime geçerek bir özür dileyeceğim. Tepkiye tepki vermek yerine yaptığımın yanlış olduğunu söylerseniz daha çok yardımcı olursunuz. Aciz diyen arkadaş zaten ayrı neyse.. fazlasına gerek yok, kg.

    2. Mustafa dedi ki:

      Abartmayın isterseniz.

  2. Erhan dedi ki:

    Merhaba. Yazmış olduğunuz makale gayet öğretici fakat metin çekmenin yanı sıra görsel ve video yani tüm media öğelerinide çekmek istemekteyim bu konu ile ilgi yardımcı olursanız sevinirim. Kolay gelsin.

    1. Mert Can dedi ki:

      Tabi ki seve seve yardımcı olurum. Bu konu hakkında öncelikle biraz araştırma yapmam gerekiyor en stabil yöntemi uygulamak için. En stabil yöntem ile en kolay, en az kodlu şekilde yazımızdan güncelleme yapacağım.

  3. MUSTAFA AKSOY dedi ki:

    Mercan kardeşim eline sağlık ben masaüstü ezan vakti ezan okuyan otomasyon yapıyorum
    gösterdiğin gibi namaz saaatlerini çekebiliyorum ama ankaranın geliyor istanbulun saatleri için ne yapmalıyız

  4. Sinan Kaytan dedi ki:

    Güzel anlatım için eline sağlık. Güzel bir program çalışmasını bitirdim. Sahibinden.com otomasyon programı yaptım. Sayende htmlagilitypack olayını öğrendim. Daha önce webresponse filan denedim çok hatalar verdi. Lakin merak ettiğim bir soru var. Yeni ilan eklendiğinde anlık olarak bunu nasıl tespit edebilirim. Bu iş içinde bir ipucu verirsen onuda hallederim inşallah.
    (Çok fazla veri çektiğim için program 30 saniyede anca bitiriyor işlemini. Mesela 1 dakikada bir kontrol edecek şekilde Timer ile sonsuz döngüye bağlasam bilgisayarı çok yoracak) bilgisayarı en az yoracak şekilde herhangi bir yöntem varmı. Bunu film sitesi içinde düşünebilirsiniz. Yeni film eklenmesi filan gibi. İyi çalışmalar

    1. admin dedi ki:

      Tabi ki de yapmamız mümkün. Aklınıza gelen yol bizi gerçekten çözüme götürür. Gün içerisinde geri dönüş yapacağım. İyi günler.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir