Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Citanje podataka sa web stranice

[es] :: .NET :: .NET Desktop razvoj :: Citanje podataka sa web stranice

[ Pregleda: 1404 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mish_ns
Miloš Krstin
Novi Sad

Član broj: 159930
Poruke: 1100
*.dynamic.isp.telekom.rs.

Sajt: milos-krstin.iz.rs


+18 Profil

icon Citanje podataka sa web stranice19.02.2013. u 07:08 - pre 84 meseci
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
 
Odgovor na temu

Dusan Kondic
Programer
ZR "Parametar" Ljubovija
Ljubovija

Član broj: 49961
Poruke: 225
*.adsl-a-6.sezampro.rs.

Sajt: www.drinacoding.com


+14 Profil

icon Re: Citanje podataka sa web stranice19.02.2013. u 07:21 - pre 84 meseci
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.
 
Odgovor na temu

mish_ns
Miloš Krstin
Novi Sad

Član broj: 159930
Poruke: 1100
*.dynamic.isp.telekom.rs.

Sajt: milos-krstin.iz.rs


+18 Profil

icon Re: Citanje podataka sa web stranice19.02.2013. u 07:48 - pre 84 meseci
Ok...hvala.

Ako neko ima jos neku ideju nek javi...
 
Odgovor na temu

ravni

Član broj: 8894
Poruke: 360



+15 Profil

icon Re: Citanje podataka sa web stranice19.02.2013. u 09:38 - pre 84 meseci
Neki headless browser mozda. Onda moze da se napise neki lagan selektor koji odabere bas to sto ti treba

http://stackoverflow.com/quest...4757/headless-internet-browser
 
Odgovor na temu

Dejan Carić
Oslo, Norway

Član broj: 230976
Poruke: 232
82.117.199.*

Sajt: www.dcaric.com


+26 Profil

icon Re: Citanje podataka sa web stranice19.02.2013. u 09:42 - pre 84 meseci
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 ;)
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12606



+4568 Profil

icon Re: Citanje podataka sa web stranice19.02.2013. u 10:26 - pre 84 meseci
Koliko ovako na brzinu vidim, taj deo koji si odvojio je istpravan xml pa ga mozes ucitati u XElement i onda lako manipulisati njime.
 
Odgovor na temu

mish_ns
Miloš Krstin
Novi Sad

Član broj: 159930
Poruke: 1100
*.dynamic.isp.telekom.rs.

Sajt: milos-krstin.iz.rs


+18 Profil

icon Re: Citanje podataka sa web stranice19.02.2013. u 13:45 - pre 84 meseci
E ljudi hvala vam puno...
Ima dosta dobrih sugestija...
 
Odgovor na temu

[es] :: .NET :: .NET Desktop razvoj :: Citanje podataka sa web stranice

[ Pregleda: 1404 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.