- Katılım
- 19 Nis 2009
- Konular
- 423
- Mesajlar
- 1,880
- Çözüm
- 14
- Online süresi
- 3mo 2h
- Reaksiyon Skoru
- 968
- Altın Konu
- 38
- TM Yaşı
- 17 Yıl 1 Ay 28 Gün
- Başarım Puanı
- 267
- MmoLira
- 3,804
- DevLira
- 9
ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!
Web sayfaları HTML kodlarından meydana getirilmektedir. Sayfa içerisinde yeralan veriler nitelik olarak HTML kodları ile ifade edilmektedir. Tarayıcılarınız üzerinde mouse sağ tuşuna basıp “Kaynağı Görüntüle” sayfanın oluşumunda bulunan tüm kaynak HTML kodlarını görebilirsiniz.
Bilindiği üzere bu HTML belgesi sunucuda barınmaktadır. Siz herhangi bir tarayıcı ile sayfanın adresini yazarak bir istekte bulunursunuz. HTML dökümanı ve beraberindeki tüm CSS, Javascript gibi unsurları, metin (text) formatında bilgisayarınıza ulaştırılır. Tarayıcınız bu dökümanda bildirilen tüm direktifleri gerçekleştirir ve sayfayı ekranınıza görüntüler.
Bu yazımızla birlikte C# ile HTML kaynak kodunu programatik olarak elde edebilirsiniz. Uygulamamızda .NET Framework’ün System.NET kütüphanelerinden faydalanarak siteye bir istekte bulunacağız. Ardından System.IO kütühanesi yardımıyla istek sonucu gelen sayfa kodlarını dosya akımı şeklinde okuyacak ve sonucu metinsel (string) bir bilgi alarak alacağız.
Uygulamaya başlarken .Net Framework’ün System.NET ve System.IO kütüphanelerinin kullanılacağını “using” deyimi ile kodlarımızın başında bildirmeliyiz.
Bilindiği üzere bu HTML belgesi sunucuda barınmaktadır. Siz herhangi bir tarayıcı ile sayfanın adresini yazarak bir istekte bulunursunuz. HTML dökümanı ve beraberindeki tüm CSS, Javascript gibi unsurları, metin (text) formatında bilgisayarınıza ulaştırılır. Tarayıcınız bu dökümanda bildirilen tüm direktifleri gerçekleştirir ve sayfayı ekranınıza görüntüler.
Bu yazımızla birlikte C# ile HTML kaynak kodunu programatik olarak elde edebilirsiniz. Uygulamamızda .NET Framework’ün System.NET kütüphanelerinden faydalanarak siteye bir istekte bulunacağız. Ardından System.IO kütühanesi yardımıyla istek sonucu gelen sayfa kodlarını dosya akımı şeklinde okuyacak ve sonucu metinsel (string) bir bilgi alarak alacağız.
Uygulamaya başlarken .Net Framework’ün System.NET ve System.IO kütüphanelerinin kullanılacağını “using” deyimi ile kodlarımızın başında bildirmeliyiz.
| 1 2 3 4 5 | using System; using System.IO; using System.Net; |
Uygulama kodlarını “HtmlKaynakOku” isimli bir metod altında gerçekleştirelim. Söz konusu metodu dilediğiniz platformda (Console, WPF, WinForm) kullanabilirsiniz.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | string HtmlKaynakOku(string url){ HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); if (response.StatusCode == HttpStatusCode.OK) { Stream receiveStream = response.GetResponseStream(); StreamReader readStream = null; if (response.CharacterSet == null) { readStream = new StreamReader(receiveStream); } else { readStream = new StreamReader(receiveStream, Encoding.GetEncoding(response.CharacterSet)); } string data = readStream.ReadToEnd(); response.Close(); readStream.Close(); return data; } |
HttpWebRequest : Doğrudan HTTP kullanarak sunucularıyla etkileşim kurmak için kullanılan yöntemleri barındırır. GetResponse() Metodu, belirtilen adres için eşzamanlı istek yapar.
HttpWebResponse : HTTP isteği gönderip, sunucudan dönen HTTP yanıtlarını almak için kullanılır. Uygulamada kullandığımızı GetResponseStream() metodu, Sunucudan yanıtın gövdesini (<body>) okumak için kullanılan bir akış nesnesi yaratır.
Stream : Gerek bir dosyadan okuduğunuz byte dizileri, gerekse bir iletişim kanalından (örneğimizde TCP/IP kanalı ) üzerinden gelen verilere ait byte dizilerini akış olarak temsil eden sınıftır.
StreamReader : Bir kaynaktan gelen byte dizi akışını belirli bir karakter seti ile okumak için kullanılır.
Uygulamımızı Console ortamında test edelim. Örneğimiz için sitemizin ana sayfasının HTML kaynak kodunu okuyacağız.
HtmlOku.cs
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | using System; using System.IO; using System.Net; using System.Text; namespace HtmlOku { class Program { static void Main(string[] args) { string urlAdres = "
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
";string htmlKaynak = HtmlKaynakOku(urlAdres); Console.WriteLine(htmlKaynak); Console.ReadKey(); } static string HtmlKaynakOku(string url) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); string data=""; if (response.StatusCode == HttpStatusCode.OK) { Stream receiveStream = response.GetResponseStream(); StreamReader readStream = null; if (response.CharacterSet == null) { readStream = new StreamReader(receiveStream); } else { readStream = new StreamReader(receiveStream, Encoding.GetEncoding(response.CharacterSet)); } data = readStream.ReadToEnd(); response.Close(); readStream.Close(); } return data; } } } |



