Meeskond:Scraper

From ICO wiki

LIIKMED

  • Ove Kangur
  • Heidi Koppel - projektijuht

BLOGI

  • 10.10.2017 - Panime meeskonna kokku
  • 10.10.2017 - Rääkisime ideest
  • 21.10.2017 - Panime idee paika
  • 3.11.2017 - Tegime analüüsi ja joonistasime andmebaasi
  • 9.11.2017 - Kirjutasime retsensiooni
  • 14.12.2017 - Hakkasime prototüüpi ette valmistama ja saime ühtlasi aru, et peame oma projekti ideed muutma
  • 21.12.2017 - Kaitsesime prototüüpi
  • 13.01.2018 - Hakkasime lõpptoote arendamisega tegelema
  • 23.01.2018 - Kaitsesime lõpptoodet

IDEE

Esialgne:

Teeme web scraper'i, mis laeb alla lehekülgede html failid, loeb nendest välja informatsiooni ning salvestab saadud info andmebaasi ning peab järge selle üle mis lehedel on käidud ning mis lehtedele, mis ajal tuleb veel(uuesti) minna.

Kasutajaliidese, kust saab valida milliseid lehekülgi tõmmata ningteha päringuid.

Kui aega üle peaks jääma siis võiks esimese asjana teha selle automaatseks nii, et ta kontrollib kas interneti ühendus on olemas ja näiteks iga päev kell 12:00 ning hakkab ise tööle (või esimesel võimaluses kui arvuti on sisse lülitatud ja internetiühendus olemas). Kui siis ka veel igav on siis rakendada mõnda (masinõppe) algoritmi või lihtsamat statistikat, mis leiaks infost midagi huvitavat ja teeks näiteks iga päev mingi kokkuvõtte/raporti ning saadab selle mailile.


Edit:

Meile sai selgeks, et me ei teosta oma esialgset plaani kuvada sõnade populaarsust. Seda seetõttu, et eesti keeles oleks kõigepealt olnud vaja programmil tunda ära kõigi sõnade algvormid (ilma käänete ja pööreteta) ja alles seejärel oleks olnud võimalik populaarsust arvutada. See oleks aga selle projekti jaoks olnud liiga suur töö.

Võtsime endale uue eesmärgi teha rakenduse, mis võimaldab kuvada ja filtreerida uudiste pealkirju erinevatest portaalidest ning näidata otsitud sõnade esinemissagedust uudiste pealkirjades kuude lõikes. Pealkirjadele klikkides on võimalik avada uudis oma veebilehitsejas.

KASUTUSJUHEND

Täpsema kasutusjuhendi koos arendusprotsessi kirjeldusega leiate programmis ReadMe failis.

Tähtis on teada, et rakenduse esmakordsel kasutamisel tuleb alustada sellest, et värskendada andmeid. Siis algab uudiste laadimine portaalidest, mis võtab aega mitu tundi.

KOOD

Lähtekood

TFS

TEHNOLOOGIA

C#

WPF

SQL

LINQ päringukeel

Entity Framework

ANALÜÜS

Miks ja mida me teeme?

Tänases suures infohulgas on raske leida üles asjalikku informatsiooni. Kliki-näljas meedia toodab palju sisutühje või kollaseid uudiseid, mille sorteerimine on tüütu. Meie rakendus annab kasutajale võimaluse saada kiiresti ülevaate aktuaalsetest teemadest ajakirjanduses. Rakendus hoiab kokku kasutaja aega ja aitab vältida kokkupuudet mõttetute pealkirjadega, mis tema igapäevast uudisvoogu risustavad.

Teeme töölaua rakenduse, mis võimaldab kuvada kõige populaarsemaid uudisteemasid praegusel hetkel ja ka otsida sõna järgi kõige populaarsemaid uudiseid, mis selle sõnaga on seotud. Ideaalis aitab rakendus soovi korral eemaldada ka “kollaste uudiste” tundemärkidega pealkirju.

Meie kasutaja on inimene, keda häirivad uudisteportaalide "kollased" pealkirjad ja kes tahab kiiret ülevaadet, et mis on praeguse hetke põhiteemad.

Kuidas meie rakendus toimib?

Rakendus kammib läbi uudiseid edastavaid veebilehti ja toob välja populaarsemad sõnad praegusel ajahetkel. Rakendus avab veebilehe uudistearhiivi ja loeb sealt sisse uudiste pealkirjad. Sealjuures välistab rakendus enam levinud sidesõnad, artiklid jms väheinformatiivsed sõnad. Rakendus tõstab esile sõnad, mille esinemissagedus on oluliselt suurem kui nende ajalooline keskmine. Kasutaja saab valida erinevate riikide uudisteportaalide ning keelte vahel.

Kasutaja saab graafilissse kasutajaliidesesse sisenedes koheselt vaadata populaarsemaid sõnu. Kui sõnale klikkida, siis saab vaadata viimaseid uudiseid, mis selle sõnaga seostuvad. Samuti saab kasutaja sisestada otsingusse sõnu ja leida nii viimaseid seotud uudiseid. Uudiseid saab kasutaja filtreerida riigiti ja alateema kaupa (poliitika, tehnoloogia, majandus jms.). Samuti saab kasutaja soovi korral valida, milliseid veebilehti otsingu jaoks kasutatakse. Vaikimisi on kasutatud kõik meie poolt valitud veebilehed.

Võimalik on vaadata viimaste otsingute ajalugu. Kaalume ka kasutajakonto loomise võimalust, et rakendus jätaks meelde konkreetse kasutaja valikud/eelistused.

Kuidas me oma rakendust ehitame?

  • Kasutame programeerimiskeelt C#
  • Kasutame Entity Frameworki andmebaasi loomiseks ja sellega suhtlemiseks.
  • Esialgu plaanime kasutada Code First lähenemist.
  • Kasutame MVVM arendusmustrit, eraldada kasutajaliidese ja andmebaasi ehitamist. Nii saame töötada ühel ajal ja kõik pole ühes failis koos.
  • Kommenteerime oma koodi, et pärast retsenseerijatel oleks ka võimalik aru saada kuidas rakendus töötab.

Milline on tööjaotus?

Oleme tiimis kahekesi ja kavatseme üldiselt kirjutada koodi koos. Erinevatele probleemidele lahenduste otsimise jaotame omavahel ära ja siis valime võimalike lahenduste seast koos selle, mis meie jaoks kõige paremini töötab ja loomulikult selle, mille kirjutamisega hakkama saame.

Mis tundub meile hetkel kõige raskem teostada?

  • MVVM arendusmustri korralikult kasutamine tundub hetkel keeruline, aga loodame, et kui reaalselt tööle hakkame ja näeme, milliseid tükke meie rakenduse jaoks on vaja kokku panna saab selgemaks kuhu miski kuulub.
  • Andmebaasi graafilise liidesega ühendamine. Loodame, et praktikumides ja loengutes tehtud on piisav ka meie rakenduse jaoks. Tähtis on, et varume selle jaoks piisavalt aega.
  • Ideaalis oleks väga praktiline ja ka hetkel maailmas tomuvaga hästi haakuv kui saaksime luua mingit sorti "Fake News" blokeeringu või siis märguande. Selle teostamine tundub aga päris raske. Esmapilgul tundub, et selline eristamine vajaks väga põhjalikku tekstianalüüsi. Proovime leida vähemalt mõne tunnuse, mille abil "fake news" päris uudistest eristada.


Millised on töö etapid?

  • Valime veebilehed, mida töödelda. Peame vaatama, et valim oleks piisavalt suur ja need esindaksid erinevaid maailmavaateid.
  • Mõtleme välja, millises vormis saadud andmed salvestada
  • Kirjutame valmis andmete tõmbamise programmi
  • Kirjutame skripti mis võtab toorandmetest välja meid huvitava info
  • Salvestame andmed andmebaasi
  • Loome kasutajaliidese
  • Kirjutame filtrid andmete kuvamiseks
  • Kirjutame otsingu.
  • Ühendame andmebaasi graafilise liidesega
  • Äkki leiame oma rakendusele mõne kõlavama nime

Tähtis on kiiresti alustada ja kõigile vajalikele koostisosadele esialgsed lahendused välja pakkuda. Nii saame paremini hinnata, mille peale võib meil kõige rohkem aega kuluda. Hetkel me ei kujuta hästi ette kui töömahukas iga etapp on. Loodetavasti see aitab meil tööga õigeaegselt valmis jõuda.

Prototüübi esitlemiseks tahaksime, et oleks valmis järgmised asjad:

  • Scraper, mis toimiks vähemalt paaril uudisteportaalil
  • Toimuks andmete salvestamine andmebaasi
  • Andmebaasist kuvatakse kasutajaliideses kõige populaarsemad sõnad.
  • Sõnadele klikkides on võimalik vaadata viimaseid selle sõnaga seotud uudiseid


Must have:

  • Toimiv scraper, mis liigub mööda meie poolt valitud uudisportaalide pealkirju
  • Graafiline kasutajaliides
  • Keelevalik. Mis keeles olevid uudisportaale otsingus kasutatakse (Radio button)
  • Riigi valik. kust pärit uudisteportaale otsingus kasutatakse (CheckBox)
  • Uudisportaalide valik (CheckBox). Vaikimisi kõik valitud
  • Alateema valik (CheckBox). Vaikimisi kõik valitud.
  • Uudiste otsing sõnade kaudu
  • Otsingute ajalugu

Nice to have:

  • võimaliku "Fake news"'i blokeering või eraldi märgistamine
  • Kuupäeva valik. Oleks tore kui kasutaja saaks minna ajas tagasi ja vaadata, mis mingil ajahetkel populaarne sõna oli.
  • Võiks olla võimalik visualiseerida sõnade populaarsuse muutumist ajateljel. Ajateljele võiks olla võimalik lisada mitu sõna, et nende liikumisi omavahel võrrelda.
  • Ilusa ja mugava disainiga kasutajaliides
  • Kasutajakonto loomise võimalus, et salvestada oma valikuid. Lisab kasutajale mugavust juhul kui ta enamasti eelistab teha ühesuguseid valikuid.