Prosty kalkulator, a jaki język?

0

Czołem.

Potrzebuję małej pomocy, planuję napisać prosty kalkulator który będzie pobierał w niektórych funkcjach wartości/dane z konkretnych stron jako wartość do pewnych obliczeń. Jestem raczej kaleką w kwestiach programowania, ale samozaparcie do nauki nie jest problemem - kwestia tylko wybrania odpowiedniej drogi.

W skrócie kilka działań na danych wprowadzanych przeze mnie, które będą opierane na danych z zewnętrznych źródeł czyt strony internetowe, gdzie w międzyczasie za pomocą jakiejś pętli programik będzie sobie odświeżał owe wartości, tak aby "przeliczniki" zgadzały się z aktualnymi wartościami podawanych przez zewnętrzne strony.

Pierwszy problem który mnie zastanawia to fakt, odświeżania owych stron, skoro program powiedzmy będzie pobierał dane co ~~ 30min, tudzież ręcznie zostanie odświeżony, nie będzie to kłopotem dla mnie ze strony administracji owych serwerów z których dane będę pobierał? Nie chciałbym bawić się bez sensu w kotka, i myszkę jeżeli moje ip wleci na blackliste :)

Wszelakie "tip-y" będą mile widziane!

Pozdrawiam

0

Jeżeli to ogólnie dostępne strony, to od strony serwera może to wyglądać tak jakbyś odświeżał te strony w przeglądarce - jeżeli za to nie ma bana to za użycie planowanego programu również.

Co do języka to ja bym pisał w C#, ale tylko dlatego, że w nim czuje się najpewniej,

0

Wiem, co mniej więcej starasz się zrobić. Robiłem podobny projekt, tylko znacznie mniej zaawansowany.

W skrócie kilka działań na danych wprowadzanych przeze mnie, które będą opierane na danych z zewnętrznych źródeł czyt strony internetowe, gdzie w międzyczasie za pomocą jakiejś pętli programik będzie sobie odświeżał owe wartości, tak aby "przeliczniki" zgadzały się z aktualnymi wartościami podawanych przez zewnętrzne strony.

Ja stworzyłem projekt, który miał za zadanie sprawdzić czy content strony się nie zmienił (czekałem na pewne wyniki dodawane w formie załącznika pdf). Zrobiłem to możliwie najbanalniejszym sposobem, jaki ktoś może wymyślić. Miałem plik ze strukturą strony z konkretnej daty, wiedziałem, że nic się tam jeszcze nie zmieniło. Ładowałem go do dynamicznej listy, pobierałem goły content ze strony i... porównywałem linijka po linijce. Z pomocą osób z forum dodałem usługę powiadamiającą za pomocą maila, odpalanie co 6 godzin i wrzuciłem na serwer. Działało.
Zrobiłbym inaczej, gdyby tylko strona udostępniała datę zmiany pliku, który pobierałem.

Odpowiadając na Twoje pytanie: wykorzystałbym język wysokiego poziomu (Java/C# lub inne równie łatwe i popularne) i pobierał dane ze strony co jakiś czas w formie zapewne czystego HTMLa.

Pierwszy problem który mnie zastanawia to fakt, odświeżania owych stron, skoro program powiedzmy będzie pobierał dane co ~~ 30min, tudzież ręcznie zostanie odświeżony, nie będzie to kłopotem dla mnie ze strony administracji owych serwerów z których dane będę pobierał? Nie chciałbym bawić się bez sensu w kotka, i myszkę jeżeli moje ip wleci na blackliste :)

Nie powinno być najmniejszego problemu z tym, że łączysz się co jakiś czas ze stroną i pobierasz z niej dane. W końcu możesz ręcznie co pół godziny, ba! nawet co 15 sekund, łączyć się ze stroną. 15 sekund to może na wyrost, ale stawiam, że połączeń ze stroną jest tyle, że nikt nie zwróci na to uwagi.

Do tego parsowanie HTML (lub najprostsze na świecie myString.indexOf(...), następnie myString.substring(...) i na samym końcu parsowanie na liczby - toporne, ale zadziała).

Szykuj się na długą i ciężką drogę. Powodzenia ;)

0

Bierz Go lub Kotlin są prostsze od C#. Ewentualnie Python QT, Ruby QT.

0

W Pythonie łatwo się pisze, i ma do takich rzeczy dobre, gotwe narzędzia.

0

Do takiego programiku bierz jakiś język skryptowy, nie ma co na to dział wytaczać: Python / JS / Ruby, ba - nawet PHP ujdzie.

0

Weź Haskella :) Idealny do tego typu zadania. https://www.schoolofhaskell.com/user/adlew/calculator

0
using System;
using HtmlAgilityPack;

abstract class Scraper {

    public enum Values {
        val1,
        val2
    }

    public static string Url = "http://example.com";
    public static string val1XPath = ".//div[@class'val1']";
    public static string val2XPath = ".//div[@class'val2']";
    public static HtmlWeb web = new HtmlWeb();
    public static HtmlDocument doc = new HtmlDocument();
    public static int val1;
    public static int val2;

    public static string GetSiteHtml() {
        return web.Load(Url).DocumentNode.InnerHtml;
    }

    public static int GetVal(Values val) {
        try {
            doc.LoadHtml(GetSiteHtml());
            switch (val) {
                case Values.val1:
                    return Convert.ToInt32(doc.DocumentNode.SelectSingleNode(val1XPath).GetAttributeValue("value", ""));
                case Values.val2:
                    return Convert.ToInt32(doc.DocumentNode.SelectSingleNode(val2XPath).GetAttributeValue("value", ""));
                default:
                    return 0;
            }
        } catch {
            return 0;
        }
    }

    public static void Refresh() {
        val1 = GetVal(Values.val1);
        val2 = GetVal(Values.val2);
    }

    public static bool isChanged() {
        int tempVal1 = GetVal(Values.val1);
        int tempVal2 = GetVal(Values.val2);

        return (tempVal1 != val1 || tempVal2 != val2);
    }
}

0

PHP+MySQL i to ogarniesz w parę minut...

1 użytkowników online, w tym zalogowanych: 0, gości: 1