Forum

c#'ta Html Sayfadan...
 
Bildirimler
Hepsini Temizle

c#'ta Html Sayfadan Veri almak(Örn:Döviz Kurlarını Almak)

35 Yazılar
13 Üyeler
0 Reactions
3,779 Görüntüleme
(@tulay)
Gönderiler: 61
Trusted Member
Konu başlatıcı
 

merhabalar ;

ben c# ta html uzantılı birden fazla website dan bazı döviz kurlarını alacağım. Siteler şunlar;

http://www.tcmb.gov.tr/kurlar/today.html (HTML uzantılı olduğuna dikkat ediniz lütfen)

http://themoneyconverter.com/TRY/PLN.aspx (bu sayfa kesin değil, html olan başka bir sitede bulabilirim.)

 

yeni bir öğrenci olduğum için kullanmam gereken kodları tam olarak oturtamadım.Yol gösterirseniz sevinirim.

Teşekkürler.. 

 
Gönderildi : 17/12/2009 19:09

(@ugurdasdemir)
Gönderiler: 1824
Noble Member
 

http://themoneyconverter.com/WebTools.aspx

 
Gönderildi : 17/12/2009 19:27

(@tulay)
Gönderiler: 61
Trusted Member
Konu başlatıcı
 

Teşekkürler, fakat html bir sayfaya eklemeyeceğim bunları. linkini belirttiğim html sayfadan çekip c# ta alacağım bunları. dolayısı ile bana html kodları değil c# kodları lazım.

 
Gönderildi : 17/12/2009 20:00

(@ugurpek)
Gönderiler: 272
Reputable Member
 

merhabalar ;

ben c# ta html uzantılı birden fazla website dan bazı döviz kurlarını alacağım. Siteler şunlar;

http://www.tcmb.gov.tr/kurlar/today.html (HTML uzantılı olduğuna dikkat ediniz lütfen)

http://themoneyconverter.com/TRY/PLN.aspx (bu sayfa kesin değil, html olan başka bir sitede bulabilirim.)

 

yeni bir öğrenci olduğum için kullanmam gereken kodları tam olarak oturtamadım.Yol gösterirseniz sevinirim.

Teşekkürler.. 


 


Forum başlığınızı daha sonra yapılacak aramalarda daha saglıklı bilgiye ulaşılması açısından düzenleyebilirmsiniz?


istediğiniz "c# ta html uzantılı birden fazla website dan bazı veriler çekmek" anlaşıldığı kadarıyla


 

 
Gönderildi : 17/12/2009 20:21

(@tulay)
Gönderiler: 61
Trusted Member
Konu başlatıcı
 

Düzelttim Uğur Bey, peki yardımcı olabilir misiniz?

 
Gönderildi : 18/12/2009 13:25

(@cozumpark)
Gönderiler: 16307
Illustrious Member Yönetici
 

HTML parse etmekle uğraşmak yerine istediğiniz veriyi XML'den almak daha uygun.
HTML zorunluluğu yoksa XML'den okumayı  deneyin derim. şu linkte bir örnek var:

 
Gönderildi : 18/12/2009 13:39

(@tulay)
Gönderiler: 61
Trusted Member
Konu başlatıcı
 

Teşekkür ederim,

Bu linklere bende ulaştım.Ama ben html den almak zorundayım. TCMB sitesi haricinde ki bazı sitelerden de alıcam ve onlar html.

 
Gönderildi : 18/12/2009 14:44

(@ugurpek)
Gönderiler: 272
Reputable Member
 

xyzt  nickli arkadşaımız  bu konularda tecrübeli bir arkadaşımızdır geçen aylarda sık sık bilgilerine başvuruyorduk sizin vesilenizle görme şansımız oldu[:)]

 
Gönderildi : 18/12/2009 14:59

(@cozumpark)
Gönderiler: 16307
Illustrious Member Yönetici
 

şu örnekte html'den okuyor:

http://www.csharptime.com/index.php/2009/04/09/doviz-kurlari-tcmb-sitesinden/ 

 
Gönderildi : 18/12/2009 15:11

(@tulay)
Gönderiler: 61
Trusted Member
Konu başlatıcı
 

Evet ama asp de okuyor. ben c#'ta okutacağım, Asp'de değil.

 
Gönderildi : 18/12/2009 15:22

(@cozumpark)
Gönderiler: 16307
Illustrious Member Yönetici
 

Asp değil Asp.net. yani sonuçta kod C# kodu. 
//Default.aspx.cs
 ve 
//Default.aspx
olarak ikiye ayırmış kodu
aslında bunlar iki ayrı dosya. 
sen Default.aspx.cs dosyasındaki kodları alıp kendine uyarlarsan C# programında kullanabilirsin. biraz incele bence.

 
Gönderildi : 18/12/2009 15:33

(@tulay)
Gönderiler: 61
Trusted Member
Konu başlatıcı
 

Asp.Net yani c# kodu ama bende size diyorum ki ben windows forma ekleyeceğim. Asp sonuçta bir web uygulaması ben web tabanlı çalıştırmayacağım, windows form ekranında getireceğim döviz miktarlarını. Ok, inceliyorum kodu sonuçta c# kodu.

 
Gönderildi : 18/12/2009 15:41

(@cozumpark)
Gönderiler: 16307
Illustrious Member Yönetici
 

Ok, inceliyorum kodu sonuçta c# kodu.

sanırım öyle.

 
Gönderildi : 18/12/2009 16:19

(@tulay)
Gönderiler: 61
Trusted Member
Konu başlatıcı
 

Şimdi ben şöyle bir kod yazdım ilk paragraflar başka bir c# kodundan alınma, alt taraftakilerde denemek için verilen aralıklar.Ama kaynak değişkenini ekrana yazdırmak istediğimde sayfadan hiçbir şey alınmamış gözüküyor. Kodlar aşağıdadır:

 string kaynak;
        private void KaynakAl()
        {
            string adres = "http://www.tcmb.gov.tr/kurlar/today.html";
            WebResponse benimResponse = null;
           
            try
            {
               WebRequest wr = WebRequest.Create(adres);
               benimResponse = wr.GetResponse();
            }
            catch (WebException)
            {
               MessageBox.Show("İnternet bağlantınızı ve Güvenlik duvarı ayarlarını kontrol ediniz", "Bağlantı hatası !!!", MessageBoxButtons.OK, MessageBoxIcon.Stop);
            }
            Stream str = benimResponse.GetResponseStream();

            StreamReader reader = new StreamReader(str);

            kaynak = reader.ReadToEnd();
            mGetir();
        }

        private void mGetir()
        {
            for (int i = 0; i < kaynak.Length - 150; i++)
            {
                if (kaynak.Substring(i, 12) == "USD/TRY")
                {
                    lblUsd.Text = kaynak.Substring(i + 14, 100);
                }
                else if (kaynak.Substring(i, 12) == "EUR/TRY")
                {
                    lblEuro.Text = kaynak.Substring(i + 14, 50);
                }
                else if (kaynak.Substring(i, 12) == "JPY/TRY")
                {
                    lblJYeni.Text = kaynak.Substring(i + 14, 50);
                }

Teşekkürler.

 Sizin verdiğiniz linkte çözüm olmadı.

 
Gönderildi : 18/12/2009 16:24

(@cozumpark)
Gönderiler: 16307
Illustrious Member Yönetici
 

debug etmeyi denedin mi? indexler falan yanlış olabilir belki. adım adım debug edersen sorun neymiş bulabilirsin. mGetir fonksiyonunun başına breakpoint koy ve debug et derim.

 
Gönderildi : 18/12/2009 16:52

(@tulay)
Gönderiler: 61
Trusted Member
Konu başlatıcı
 

Debug ettim, herhangi bir hata vermiyor ama forma da hiçbirsey gelmiyor. Adım adım debug edince şunu gördüm ki , yazdığım kodları mGetir metodunu falan hiç çalıştırmıyor. kaynak satırına hiç gelmiyor. Forma geldikten sonra labeların özelliklerini okuyor sonrasında formu ekrana getiriyor. Yazdığım kodlarda sorun var mı?

 
Gönderildi : 18/12/2009 17:27

(@cozumpark)
Gönderiler: 16307
Illustrious Member Yönetici
 

KaynakAl() metodu biryerde çağırıyolurmu. kodun tamamını göndersen daha iyi olur.

 
Gönderildi : 18/12/2009 17:32

(@tulay)
Gönderiler: 61
Trusted Member
Konu başlatıcı
 

Hayır hiç çağrılmıyor. Tüm kod aşağıda ,

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.IO;

namespace Kurlar
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

       string kaynak;
        private void KaynakAl()
        {
            string adres = "http://www.tcmb.gov.tr/kurlar/today.html";
            WebResponse benimResponse = null;
          
            try
            {
               WebRequest wr = WebRequest.Create(adres);
               benimResponse = wr.GetResponse();
            }
            catch (WebException)
            {
               MessageBox.Show("İnternet bağlantınızı ve Güvenlik duvarı ayarlarını kontrol ediniz", "Bağlantı hatası !!!", MessageBoxButtons.OK, MessageBoxIcon.Stop);
            }
            Stream str = benimResponse.GetResponseStream();

            StreamReader reader = new StreamReader(str);

            kaynak = reader.ReadToEnd();
            mGetir();
        }

        private void mGetir()
        {
            for (int i = 0; i < kaynak.Length - 150; i++)
            {
                if (kaynak.Substring(i, 150) == "USD/TRY")
                {
                    lblUsd.Text = kaynak.Substring(i + 14, 100);
                }
                else if (kaynak.Substring(i, 150) == "EUR/TRY")
                {
                    lblEuro.Text = kaynak.Substring(i + 100, 200);
                }
                else if (kaynak.Substring(i, 150) == "JPY/TRY")
                {
                    lblJYeni.Text = kaynak.Substring(i + 200, 300);
                }

            }
        }
    }
}

 

adım adım çalıştırırken InitializeComponent(); 'a geldikten sonra Form1.Designer.cs dosyasından labelların yerlerini falan okuyor sırayla sonra ,Form1.cs dosyasından tekrar InitializeComponent() satırına geliyor.Program.cs'den Application.Run(new Form1()); ve form ekranda .

 
Gönderildi : 18/12/2009 17:49

(@cozumpark)
Gönderiler: 16307
Illustrious Member Yönetici
 

 public Form1()
        {
            InitializeComponent();

            KaynakAl();
        }
 
 
bunu dene istersen.  
demek ki neymiş, çağırmadığın bir fonksiyon çalışmazmış. bunu da öğrenmiş oldun bu vesileyle..

 
Gönderildi : 18/12/2009 18:17

Sayfa 1 / 2
Paylaş: