Browse Source

changed self to a dictionary

partial
Raphael Roberts 7 years ago
parent
commit
daf31eb42e
  1. 16
      scraper.py

16
scraper.py

@ -19,13 +19,14 @@ def datetime2date_time(dtime,mode):
def seconds_from_midnight(t): def seconds_from_midnight(t):
return t.hour*60**2+ t.minute*60+t.second return t.hour*60**2+ t.minute*60+t.second
class Class: class Class:
def __init__(self,title,session,days,location,time_range):
def __init__(self,title,session,days,location,time_range,date_range):
self.title = title self.title = title
self.session = session self.session = session
self.days = days self.days = days
self.location = location self.location = location
self.time_range = time_range self.time_range = time_range
self.lab = None self.lab = None
self.date_range = date_range
# data is a list of two html tables # data is a list of two html tables
def scrape(self,data): def scrape(self,data):
info,times = data info,times = data
@ -71,21 +72,22 @@ class Class:
ret = {} ret = {}
time_data = dict(zip(headers,data)) time_data = dict(zip(headers,data))
if time_data['time'] == 'TBA': if time_data['time'] == 'TBA':
self.time_range = None
ret['time_range'] = None
else: else:
s,e = map(dateparse,time_data['time'].split(' - ')) s,e = map(dateparse,time_data['time'].split(' - '))
self.time_range = (
ret['time_range'] = (
datetime2date_time(s,'time'), datetime2date_time(s,'time'),
datetime2date_time(e,'time'), datetime2date_time(e,'time'),
) )
s,e = map(dateparse,time_data['date range'].split(' - ')) s,e = map(dateparse,time_data['date range'].split(' - '))
self.date_range = (
ret['date_range'] = (
datetime2date_time(s,'date'), datetime2date_time(s,'date'),
datetime2date_time(e,'date'), datetime2date_time(e,'date'),
) )
time_data['days'] = re.sub('[^{}]'.format(''.join(filter(bool,days))),'',time_data['days']) time_data['days'] = re.sub('[^{}]'.format(''.join(filter(bool,days))),'',time_data['days'])
self.days = list(days.index(time_data['days'][i]) for i in range(len(time_data['days'])))
self.location = time_data['where']
ret['days'] = list(days.index(time_data['days'][i]) for i in range(len(time_data['days'])))
ret['location'] = time_data['where']
return ret
@property @property
def length(self): def length(self):
@ -105,4 +107,4 @@ def get_classes(page):
if __name__ == "__main__": if __name__ == "__main__":
with open('schedule.html') as file: with open('schedule.html') as file:
page = BS(file.read(),'lxml') page = BS(file.read(),'lxml')
class1,*classes = get_classes(page)
class1,*classes = get_classes(page)
Loading…
Cancel
Save