REPUBLIKA SRBIJA

VISOKA TEHNIČKA ŠKOLA 

STRUKOVNIH STUDIJA

POŽAREVAC

SEMINARSKI RAD 

Organizacija rada 

Automatsko prikupljanje podataka sa sajta

Student

: Stefan Mišić

Br. Indeksa: 456489/16

Profesor

: dr. Zoran Pešić

Studijski program

: Elektrotehnika

Predmet

: Organizacija rada

POŽAREVAC, 2016

2

Sadržaj:

1

Uvod.......................................................................................................................................................3

2

Funkcija skripta......................................................................................................................................4

3

Sam kod skripta......................................................................................................................................5

4

Detaljnija analiza koda...........................................................................................................................8

5

Ostale funkcije detaljnije objašnjene.....................................................................................................9

5.1

def get_guru_player_list().............................................................................................................9

5.2

get_previous_lineup....................................................................................................................10

5.3

writing_points(real_points,id_row, table_name).......................................................................10

5.4

grading().......................................................................................................................................11

5.5

get_average_site_grade(table)....................................................................................................12

6

Rezultat skripta....................................................................................................................................13

background image

4

2 Funkcija skripta

U ovom radu će biti opisan jedan od mojih web skrejpera: Skript koji automatizuje prikupljanje podataka 
koji se koriste prilikom ocenjivanja bejzbol fantazi sastava. 

Šta je bejzbol fantazi?

Grupa 'sportova' koji se uglavnom igraju na internetu. Naime korisnici sastavljaju imaginarne timove sa 
stvarnim igračima. Uspeh svakog igrača se prebacuje u takozvane fantazi poene (ako je reč o košarci: 
svaka asistencija, šut za 2/3 poena, odbrana i drugo se množe sa određenim koeficijentom) i sumiranjem 
uspeha svih igrača u sastavu dobija konačna cifra. Ko ima veću cifru pobeđuje. Igrači se biraju na osnovu 
projektovanih fantazi poena koji se mogu videti na sajtu do početka meča.

Ovaj skript skuplja podatke sa sajta koji već sam izračunava fantazi poene na osnovu već postojećeg 
sastava bejzbol fantazi tima, poredi sumu stvarnih sa projektovanim rezultatima, računa procenat 
uspešnosti i upisuje u bazu podataka za dalju analizu.

Sastavi timova se prikupljaju sa tri sajta: dailyfantasypros.com, rotowire.com, rotogrinders.com.

Kada se ocene sastavi sa svakog sajta, računa se prosečna ocena za svaki sajt posebno.

Određivanje procenata uspešnosti sastava timova se vrši po formuli: (zbir stvarnog učinka/zbir 
projektovanog učinka)*100

5

3 Sam kod skripta

001: #Ime baze podataka sa podacima kao globalna promenljiva
002: completeName='lineups_database.db'
003: 
004: #Funkcija skuplja kompletnu listu igraca sa sajta rotoguru1.com koji su 
igrali prethodne veceri
005: def get_guru_player_list():
006: 

roto_guru_list=[]

007: 

#Konekcija ka sajtu

008: 

doc = parse('http://rotoguru1.com/cgi-bin/byday.pl?game=fd').getroot()

009: 

for row in doc.cssselect('table > tr'):

010: 

    for cell in row.cssselect('td:nth-child(3)'):

011: 

    

for closer in cell.cssselect('table'):

012: 

    

for i in range(3,400):

013: 

    

tmp=[]

014: 

    

for item in closer.cssselect('tr:nth-child('+str(i)

+')'):
015: 

    

#Pozicija na kojoj igrac igra

016: 

for player_position in 

item.cssselect('td:nth-child(1)'):
017: 

tmp.append(player_position.text_content().encode('utf-8').strip())

018: 

#Ime igraca

019: 

for closer_name in 

item.cssselect('td:nth-child(2)'):
020: 

for even_closer_name in 

closer_name.cssselect('a'):
021: 

tmp.append(even_closer_name.text_content().encode('utf-8').strip())

022: 

#Poeni igraca

023: 

for closer_points in 

item.cssselect('td:nth-child(3)'):
024: 

tmp.append(closer_points.text_content().encode('utf-8').strip())

025: 

roto_guru_list.append(tmp)

026: 
027: #Ocistiti listu od svih praznih redova(koji ne sadrze sve potrebne podatke) 
ako takvi postoje
028: 

for i in range(len(roto_guru_list)):

029: 

try:

030: 

if len(roto_guru_list[i])!=3:

031: 

del roto_guru_list[i]

032: 

except IndexError:

033: 

continue

034: 

return roto_guru_list

035: 
036: #Prikupiti prethodni sastav iz tabele
037: def get_previous_lineup(table,print_res):
038: #Citanje iz tabele:
039: 

#Uspostaviti konekciju sa tabelom

040: 

conn = sqlite3.connect(completeName)

041: 

with conn:

042: 

c = conn.cursor()

043: 

#Naredbe koje se ticu citanja iz tabele

044: 

player_list=c.execute("SELECT * FROM "+table).fetchall()

045: 

if print_res==True:

046: 

print ' "Najsvežiji" sastav iz tabele : ',table

047: 

for i in player_list:

048: 

for n in i:

049: 

try: print n.strip(),

050: 

except: print n,

051: 

print ' ',

Želiš da pročitaš svih 15 strana?

Prijavi se i preuzmi ceo dokument.

Ovaj materijal je namenjen za učenje i pripremu, ne za predaju.

Slični dokumenti