Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 6 odgovora
  • 2.924 pregleda

Najnovija ↓

Citanje podataka sa web stranice 19.02.2013. u 08:08 · pre 166 meseci #1
Pozdrav svima.

Naime, imam zadatak da čitam podatke sa web starnice.
Tačnije treba mi srednji kurs evra sa sajta NBS.
Preko WebRequest i WebResponse objekata sam iščitao sadržaj html-a.

Sada me interesuje kako da dođem do željenog podatka o kursu.

deo sadržajakoji mi treba izgleda ovako:
Code:

<tr><td class="tableCell" style="text-align:center;">978</td><td class="tableCell" style="text-align:left;">EMU</td><td class="tableCell" style="text-align:center;">EUR</td><td class="tableCell" style="text-align:center;">1</td><td class="tableCell" style="text-align:right;">111,1627</td></tr>


Moja neka ideja je da nađem index od "EUR", onda da recimo uzmem Substring odatle plus 150 karatera, i odatle da probam izvući kurs (111,1627).
Međutim mali problem je ova jedinica između.

HVALA
Re: Citanje podataka sa web stranice 19.02.2013. u 08:21 · pre 166 meseci #2
Regularan način, a po meni i lakši, je da se nakačiš na servis NBS.
Ako do sada nisi radio sa servisima, pročitaj uputstvo NBS razvojnog tima i potraži na ES nešto na ovu temu.
Jedina neprijatnost je ta što moraš da pošalješ zahtev i da sačekaš odobrenje, mada se sve to završi relativno brzo.
Pozdrav.
Re: Citanje podataka sa web stranice 19.02.2013. u 10:42 · pre 166 meseci #5
Ovo je klasa za parsiranje tabele. Trebaš da referenciraš HtmlAgilityPack
Code:

public class KursnaListaFetcher
{
    public KursnaLista DohvatiListu(string url)
    {
        using (var webClient = new WebClient())
        {
            webClient.Encoding = Encoding.UTF8;
            string html = webClient.DownloadString(url);

            var htmlDocument = new HtmlDocument();
            htmlDocument.LoadHtml(html);

            string xpath = "//tbody[@id='index:srednjiKursLista:tbody_element']//tr";
            var rows = htmlDocument.DocumentNode.SelectNodes(xpath);

            if (rows != null)
            {
                var kursnaLista = new KursnaLista
                {
                    Valute = new List<Valuta>(rows.Count)
                };

                var cultureInfo = new CultureInfo("sr-Latn-CS");

                foreach (var row in rows)
                {
                    kursnaLista.Valute.Add(new Valuta
                    {
                        SifraValute = row.ChildNodes[0].InnerText,
                        NazivZemlje = HttpUtility.HtmlDecode(row.ChildNodes[1].InnerText),
                        OznakaValute = row.ChildNodes[2].InnerText,
                        VaziZa = int.Parse(row.ChildNodes[3].InnerText),
                        SrednjiKurs = float.Parse(row.ChildNodes[4].InnerText, cultureInfo)
                    });
                }

                return kursnaLista;
            }
        }
        return null;
    }
}

public class KursnaLista
{
    public int Broj { get; set; }
    public DateTime FormiranaNaDan { get; set; }

    public List<Valuta> Valute { get; set; }
}

public class Valuta
{
    public string SifraValute { get; set; }
    public string NazivZemlje { get; set; }
    public string OznakaValute { get; set; }
    public int VaziZa { get; set; }
    public float SrednjiKurs { get; set; }
}


Pozivanje iz aplikacije:
Code:

private static void Main()
{
    var fetcher = new KursnaListaFetcher();
    var kursnaLista = fetcher.DohvatiListu("http://www.nbs.rs/kursnaListaModul/srednjiKurs.faces?lang=lat");

    if (kursnaLista != null && kursnaLista.Valute != null)
    {
        var eur = kursnaLista.Valute.FirstOrDefault(x => x.OznakaValute == "EUR");
        Console.WriteLine("Sifra: " + eur.SifraValute);
        Console.WriteLine("Naziv zemlje: " + eur.NazivZemlje);
        Console.WriteLine("Oznaka valute: " + eur.OznakaValute);
        Console.WriteLine("Vazi za: " + eur.VaziZa);
        Console.WriteLine("Srednji kurs: " + eur.SrednjiKurs);
    }
}


Bilo bi dobro ako možeš da izmeniš fetcher tako da vraća broj liste i datum formiranja, pa da ovaj kod posluži još nekom ;)
Potpis
gramatika srpskog jezika
testovi iz srpskog jezika
jezičke nedoumice
Re: Citanje podataka sa web stranice 19.02.2013. u 11:26 · pre 166 meseci #6
Koliko ovako na brzinu vidim, taj deo koji si odvojio je istpravan xml pa ga mozes ucitati u XElement i onda lako manipulisati njime.
Potpis
Nebojsa Milanovic:
-Trumpa smatram vrhunskim predsednikom i voleo bih da živim u državi na čijem je on čelu
-Rusija ne laže, ne vodi osvajačke ratove
-Trump je svetla tačka u USA blatu
-Elon Musk, možda najpametniji i najtrezveniji Amerikanac
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme