Can Öcalan 1
Can Öcalan
mavzermete 1
mavzermete
farkmt2official 1
farkmt2official
Sevdamsın 1
Sevdamsın
Mt2Hizmet 1
Mt2Hizmet
Fethi Polat 1
Fethi Polat
Hikaye Ekle

C# ile HTML Kaynak Kodu

Ayyıldız2 | 2008 TR Yapısı • 1-99 Orta Emek Destan • Oto Avsız • 10 Temmuz 21:00 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.

source.png


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;
}
Uygulama için kullandığımız sınıf ve metodlarını öğrenelim ve neler yaptığımıza bir bakalım;

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 = " ";
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;
}
}
}
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst