Forum

c# ile Ziraat banka...
 
Bildirimler
Hepsini Temizle

[Çözüldü] c# ile Ziraat bankası kurlarını alma

mevlüt kızıltuğ
(@mevlutkiziltug)
Üye

ziraat bankasına ait kurları textboxlara nasıl alabiliriz

Alıntı
Topic starter Gönderildi : 23/11/2016 16:25
Engin Kulaç
(@enginkulac)
Üye

Merkez bankasını basitce alabilirsin ama Ziraat bankası zor gibi görünüyor.

CevapAlıntı
Gönderildi : 23/11/2016 17:41
mevlüt kızıltuğ
(@mevlutkiziltug)
Üye

Webclient ile yapilabildigini soylediler. ancak bir turlu cozwmedim. bilgiyi nasil alacagimizi

CevapAlıntı
Topic starter Gönderildi : 23/11/2016 21:45
Burak Şentürk
(@BurakSenturk)
Üye

Selam,

Webclient ile yapılabilir ancak bu sayfaya parametre geçmeden sadece webclientin çalıştığı zamanda ziraat bankasının sayfasında hangi veriler var ise onları alırsın. Yani ;

geçmişe dönük kur alayım dersen olmaz.

Webclientı bu iş için kullanacaksan girdiğiniz urlnin indirilmesi, okunması gibi düşünebilirsin. Yani bir urlyi baştan sonu okusam, sonra onun içerisinde belli alanları arasam mesala ID = Döviz kuru olan div gibi. Sonrasında bu divin içinde usd olanın şu ID li divinin içindeki tutarı getir desen aslında sorunun çözülür. 

Ancak dediğim gibi, bu sayfaya parametre geçilebilirmi denemek lazım, öyle ise istediğin tarihteki istediğin kuru alırsın, yoksa biraz zor. 

Htmlparsing konusunu biraz araştır senin ilacın bu. Çok takılırsan yazarsın yardımcı olmaya çalışırım.

 

İyi Günler Dilerim,

CevapAlıntı
Gönderildi : 24/11/2016 14:47
mevlüt kızıltuğ
(@mevlutkiziltug)
Üye

Bana anlik kur degerleri lazim zaten. bana ornek bir uygulama gosterir misin. 

CevapAlıntı
Topic starter Gönderildi : 24/11/2016 23:42
mevlüt kızıltuğ
(@mevlutkiziltug)
Üye

Anlik web sayfasini aldim  ancak dolar kurunu alamadim bir turlu surekli bos deger gosteriyor

CevapAlıntı
Topic starter Gönderildi : 27/11/2016 13:30
mevlüt kızıltuğ
(@mevlutkiziltug)
Üye

<table class="CurrencyData" border="0" cellpadding="0" cellspacing="0" width="234"><tbody><tr class="odd first"><td width="110" class="firstTd">25.11.2016 1947</td><td width="60">Banka Alış</td><td width="65">Banka Satış</td></tr><tr class="even"><td class="firstTd"><span style="font-size:9px">A01 ALTIN</span><span style="font-size:9px"> 995/1000</span></td><td><span></span> 126,004432</td><td><span></span> 133,845811</td></tr><tr class="odd"><td class="firstTd"><span style="font-size:9px">A02 ALTIN 1000/1000</span></td><td><span></span> 126,768966</td><td><span></span> 134,610346</td></tr><tr class="even"><td class="firstTd">EURO</td><td><span></span> 3,5783</td><td><span></span> 3,7243</td></tr><tr class="odd"><td class="firstTd">USD</td><td><span></span> 3,3761</td><td><span></span> 3,5138</td></tr><tr class="odd foot"><td colspan="3"></td></tr></tbody></table>

yukarıdaki ekranda doların alış ve satıs kurlarını nasıl alabiliriz. sürekli boş değer dönüyor

CevapAlıntı
Topic starter Gönderildi : 27/11/2016 17:13
mevlüt kızıltuğ
(@mevlutkiziltug)
Üye

if ((row.SelectSingleNode("//tr[@class='odd first']").InnerText) != null)
{

label1.Text += row.SelectSingleNode("//tr[@class='odd first']").InnerText + "<br />";
}

 

nesne boş hatası veriyor

CevapAlıntı
Topic starter Gönderildi : 27/11/2016 17:35
mevlüt kızıltuğ
(@mevlutkiziltug)
Üye

foreach (HtmlNode table in document.DocumentNode.SelectNodes("//table[@class='currencydata']"))

döngü de çalışmıyor

CevapAlıntı
Topic starter Gönderildi : 27/11/2016 17:37
cem kılıç
(@cemkilic)
Üye

[quote user="mevlüt kızıltuğ"]

<table class="CurrencyData" border="0" cellpadding="0" cellspacing="0" width="234"><tbody><tr class="odd first"><td width="110" class="firstTd">25.11.2016 1947</td><td width="60">Banka Alış</td><td width="65">Banka Satış</td></tr><tr class="even"><td class="firstTd"><span style="font-size:9px">A01 ALTIN</span><span style="font-size:9px"> 995/1000</span></td><td><span></span> 126,004432</td><td><span></span> 133,845811</td></tr><tr class="odd"><td class="firstTd"><span style="font-size:9px">A02 ALTIN 1000/1000</span></td><td><span></span> 126,768966</td><td><span></span> 134,610346</td></tr><tr class="even"><td class="firstTd">EURO</td><td><span></span> 3,5783</td><td><span></span> 3,7243</td></tr><tr class="odd"><td class="firstTd">USD</td><td><span></span> 3,3761</td><td><span></span> 3,5138</td></tr><tr class="odd foot"><td colspan="3"></td></tr></tbody></table>

yukarıdaki ekranda doların alış ve satıs kurlarını nasıl alabiliriz. sürekli boş değer dönüyor

[/quote]

ASP NET yerıne neden XML kullanmıyorsun girdigin verılerı XML le cekıp lısteletebılırsın

CevapAlıntı
Gönderildi : 29/11/2016 00:25
mevlüt kızıltuğ
(@mevlutkiziltug)
Üye

Zaten bu veriler ziraatten cekiliyor. bunun icinden dolar verilerini alamiyorum. bilen arkadaslar neden cevap vermez

CevapAlıntı
Topic starter Gönderildi : 29/11/2016 00:28
cem kılıç
(@cemkilic)
Üye

[quote user="mevlüt kızıltuğ"]

Zaten bu veriler ziraatten cekiliyor. bunun icinden dolar verilerini alamiyorum. bilen arkadaslar neden cevap vermez

[/quote]

yaw he he debelen dur

CevapAlıntı
Gönderildi : 29/11/2016 00:54
mevlüt kızıltuğ
(@mevlutkiziltug)
Üye

Bilen yok mu acaba

Bos konusan olmasin

CevapAlıntı
Topic starter Gönderildi : 29/11/2016 11:11
mevlüt kızıltuğ
(@mevlutkiziltug)
Üye

Olmadi baska yolu yok mu

CevapAlıntı
Topic starter Gönderildi : 30/11/2016 22:41
Yavuz Cingöz
(@YavuzCingoz)
Üye

Merhaba,

Öncelikle buranın bir bilgi paylaşım forumu olduğunu hatırlatmak isterim. Karşılıklı atışmalar ve özellikle saygısızlık boyutundaki yazışmalar için doğru yerde değilsiniz.

Ayrıca cevabı alabilmek için doğru sorunun sorulması gerektiğini düşünüyorum. Örnek olarak, HTML verisini parse edip aradaki bir veriyi almak istiyorsanız soruyu bu noktaya getirdikten sonra sormak cevap almanızı hızlandıracaktır. Böyle bir soruya bu forumdaki çoğu kişi cevap verir ancak; sizin için araştırma yapmak veya proje bulup paylaşmak pek tercih edilecek bir yöntem değil.

 

Cevaba gelince; buna benzer bir ihtiyacım olmuştu ve HtmlAgilityPack kütüphanesini kullanarak işi halletmiştim. Kullandığım kodu örnek olması adına aşağıda paylaşıyorum. Bundan esinlenerek birşeyler çıkartabilirsiniz.

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;

namespace entClient
{
public class TPHtmlParse
{
public static List<HtmlRow> GetRows(string url)
{
try
{
WebClient wc = new WebClient();
var htmlData = wc.DownloadString(url);
List<HtmlRow> data = null;
var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(htmlData);
var table = doc.DocumentNode.Descendants().LastOrDefault(x => x.Name.ToLower() == "table");
var lines = (table != null) ? table.InnerHtml : null;
if (string.IsNullOrEmpty(lines)) return null;
doc.LoadHtml(lines);
var rows = doc.DocumentNode.SelectNodes("//tr");
if (rows != null && rows.Count > 0)
{
data = new List<HtmlRow>();
HtmlAgilityPack.HtmlDocument subDoc = new HtmlAgilityPack.HtmlDocument();
foreach (var row in rows)
{
if (!row.InnerHtml.Contains("span style")) continue;
subDoc.LoadHtml(string.Format("<tr>{0}</tr>", row.InnerHtml));
var cells = subDoc.DocumentNode.SelectNodes("//td");
if (cells != null && cells.Count == 8)
{
double d;
var hr = new HtmlRow();
for (int x = 0; x < 8; x++)
{
var cell = cells[x];
var text = (cell.InnerHtml.Contains("<br>"))
? cell.InnerHtml.Split(new string[] { "<br>" }, StringSplitOptions.RemoveEmptyEntries)[0] : cell.InnerHtml;
text = text.Replace("-", "").Replace("+", "").Replace("'", "").Replace(".", ",");
switch (x)
{
case 0:
hr.Tank = HtmlRemoval.StripTagsRegex(text);
break;
case 1:
hr.Urun = HtmlRemoval.StripTagsRegex(text);
break;
case 2:
hr.Lokasyon = HtmlRemoval.StripTagsRegex(text);
break;
case 3:
hr.Seviye = (double.TryParse(HtmlRemoval.StripTagsRegex(text), out d)) ? d * 1000 : 0;
break;
case 4:
hr.GOV = (double.TryParse(HtmlRemoval.StripTagsRegex(text), out d)) ? d * 1000 : 0;
break;
case 5:
hr.TOV = (double.TryParse(HtmlRemoval.StripTagsRegex(text), out d)) ? d * 1000 : 0;
break;
case 6:
hr.NSV = (double.TryParse(HtmlRemoval.StripTagsRegex(text), out d)) ? d * 1000 : 0;
break;
case 7:
hr.MASS = (double.TryParse(HtmlRemoval.StripTagsRegex(text), out d)) ? d * 1000 : 0;
break;
}
}
data.Add(hr);
}
}
}
return data;
}
catch (Exception ex)
{
throw ex;
}
}
}

public class HtmlRow
{
public string Tank { get; set; }
public string Urun { get; set; }
public string Lokasyon { get; set; }
public double Seviye { get; set; }
public double GOV { get; set; }
public double TOV { get; set; }
public double NSV { get; set; }
public double MASS { get; set; }

public override string ToString()
{
return string.Format("Tank: {0} | Urun: {1} | Lokasyon: {2} | Seviye: {3} | GOV: {4} | TOV: {5} | NSV: {6} | MASS: {7}", Tank, Urun, Lokasyon, Seviye, GOV, TOV, NSV, MASS);
}
}

public static class HtmlRemoval
{
/// <summary>
/// Remove HTML from string with Regex.
/// </summary>
public static string StripTagsRegex(string source)
{
return Regex.Replace(source, "<.*?>", string.Empty);
}

/// <summary>
/// Compiled regular expression for performance.
/// </summary>
static Regex _htmlRegex = new Regex("<.*?>", RegexOptions.Compiled);

/// <summary>
/// Remove HTML from string with compiled Regex.
/// </summary>
public static string StripTagsRegexCompiled(string source)
{
return _htmlRegex.Replace(source, string.Empty);
}

/// <summary>
/// Remove HTML tags from string using char array.
/// </summary>
public static string StripTagsCharArray(string source)
{
char[] array = new char[source.Length];
int arrayIndex = 0;
bool inside = false;

for (int i = 0; i < source.Length; i++)
{
char let = source[i];
if (let == '<')
{
inside = true;
continue;
}
if (let == '>')
{
inside = false;
continue;
}
if (!inside)
{
array[arrayIndex] = let;
arrayIndex++;
}
}
return new string(array, 0, arrayIndex);
}
}
}

CevapAlıntı
Gönderildi : 01/12/2016 14:24
Hakan Uzuner beğendi
kamil karşal
(@bilgin0001)
Üye
WebRequest SiteyeBaglantiTalebi = HttpWebRequest.Create("http://..........");
WebResponse GelenCevap = SiteyeBaglantiTalebi.GetResponse();
StreamReader CevapOku = new StreamReader(GelenCevap.GetResponseStream());
string KaynakKodlar = CevapOku.ReadToEnd();
int IcerikBaslangicIndex = KaynakKodlar.IndexOf("<h3>") + 4;
int IcerikBitisIndex = KaynakKodlar.Substring(IcerikBaslangicIndex).IndexOf("</h3>");
 
Console.WriteLine(KaynakKodlar.Substring(IcerikBaslangicIndex, IcerikBitisIndex));
Console.Read();
 
buradaki kodları kullanarak ziraat bankasındaki döviz kurlarını anlık olarak çekemedim.
CevapAlıntı
Gönderildi : 12/07/2021 16:57
Paylaş: