Plan zajęć cz. 6 – Pobieranie aktualności
W tym tygodniu napisałem dwa serwisy pozwalające pobierać informacje o aktualnościach ze stron Internetowych. Dodatkowo poprawiłem logowanie w aplikacji mobilnej. Wykorzystuje ono teraz SecureString, dzięki czemu można wykorzystać ten sam ViewModel.
Pobieranie
Zadanie jest proste. Trzeba pobrać zawartość strony i wytypować rekordy z informacjami o aktualnościach. W tym celu posłużę się wyrażeniami regularnymi. Każda strona posiada inny układ i inaczej wygląda w kodzie źródłowym strony. Ze względu na to stworzyłem interfejs INewsService, który posiada tylko jedną metodę GetNews. Każda strona z informacjami będzie posiadała odpowiednią klasę implementującą logikę pobierania informacji odpowiadającej tej stronie. Dzięki zastosowanemu interfejsowi można później przechowywać wszystkie klasy w jednej kolekcji.
Schemat interpretowania strony jest prosty. Pierwszą czynnością jest pobranie informacji ze strony Internetowej. W tym przypadku posługuję się poleceniem GET, które zwraca mi zawartość strony. Następnie skonstruowałem wyrażenie regularne pobierające interesujące mnie informacji o wiadomości, tytuł, adres internetowy do wiadomości oraz datę dodania. Wszystkie informacje później posłużą do stworzenia kolekcji składającej się z klas NewsRecordViewModel przedstawiających wiadomości wewnątrz aplikacji. Poniżej przykładowy kod klasy dla strony głównej strony uczelni.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
public async Task { var output = new List var website = await GetWebsiteContent(@"http://www.zut.edu.pl/zut-studenci/start/aktualnosci.html#"); var News = Regex.Matches(website, "(?:href=\")(.*?)(?:\".*?em>)(.*?)(?:.*?-->)(.*?)(?:
KończącPobieranie informacji ze stron Internetowych jest prostą czynnością, nie miej jednak przez to, że każda strona ma inną strukturę, nie można stworzyć uniwersalnego rozwiązania pobierającego informacje z różnych stron. Kolejnym etapem jest implementacja zmieniania dni na aplikacji mobilnej, jak i ulepszenie nawigacji w aplikacji desktopowej. Jednymi z ostatnich kroków do ukończenia aplikacji będą zrobienie ustawień użytkownika oraz przechowywanie informacji o loginie i haśle w bezpieczny sposób bez względu na platformę. Dodatkowo aplikacja desktopowa musi zostać przerobiona na styl widgetu — jeżeli użytkownik naciśnie na jakąś część aplikacji, która nie jest przyciskiem, powinien być w stanie poruszyć aplikacją, zmieniając w ten sposób jej pozycje na ekranie. Cały kod aplikacji można zobaczyć na moim koncie github /kkolodziejczak/ZUTScheduleTranslate »
|