Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import requests
- from bs4 import BeautifulSoup
- class HomeAccess:
- def __init__(self, username, password):
- self.username = username
- self.password = password
- self.auth_token = self.get_login_cookie()
- print(self.auth_token)
- schedule_html = self.get_schedule_html()
- raw_classes = self.get_class_list_raw(schedule_html)
- self.classes = self.get_class_list(raw_classes)
- #for x in self.classes:
- #print(x.semester)
- #print(x.period)
- # print(x.class_name)
- #print(x.teacher)
- def get_login_cookie(self):
- url = 'https://istudent.d303.org/HomeAccess/Account/LogOn?ReturnUrl=/HomeAccess'
- cookies = dict([('ASP.NET_SessionId', "gr4crbvhemballgpta3yx2qv;"), ('visid_incap_236520', 'XgwZ7PqTRoCLwNNXFlSmF4EJHloAAAAAQUIPAAAAAADEH32F7QrNaN8No1/sHeiu'), ("SPIHACSiteCode", "")])
- headers = {'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0",
- "Upgrade-Insecure-Requests": "1",
- "Content-Type": "application/x-www-form-urlencoded",
- "Referer": "https://istudent.d303.org/HomeAccess/Account/LogOn?ReturnUrl=%2fHomeAccess%2f",
- "host": "istudent.d303.org",
- "Connection": "keep-alive",
- "Accept-Language": "en-US,en;q=0.5",
- "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
- }
- data = {"Database": "10",
- "LogOnDetails.Username": self.username,
- "LogOnDetails.Password": self.password,
- }
- r = requests.post(url, cookies=cookies, headers=headers, data=data)
- return r.history[0].cookies.get(name='.AuthCookie', domain='istudent.d303.org', path='/')
- def get_schedule_html(self):
- url = 'https://istudent.d303.org/HomeAccess/Content/Student/Classes.aspx'
- headers = {"Accept": 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
- "Accept-Encoding": "gzip",
- "Connection": "keep-alive",
- "Host" : "istudent.d303.org",
- "Referer": "https://istudent.d303.org/HomeAccess/Classes/Classwork",
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0"
- }
- cookies = dict([('ASP.NET_SessionId', "gr4crbvhemballgpta3yx2qv;"), ('visid_incap_236520', 'XgwZ7PqTRoCLwNNXFlSmF4EJHloAAAAAQUIPAAAAAADEH32F7QrNaN8No1/sHeiu'), ("SPIHACSiteCode", ""), ('.AuthCookie', self.auth_token)])
- r = requests.get(url, cookies=cookies, headers=headers)
- return r.content
- @staticmethod
- def get_class_list_raw(schedule_html):
- soup = BeautifulSoup(schedule_html, 'lxml')
- classes = soup.find_all('tr', {'class': 'sg-asp-table-data-row'})
- return classes
- # pass a BeautifulSoup result set, returns list of type Class
- def get_class_list(self, raw_list_html):
- class_list = []
- for x in raw_list_html:
- class_list.append(Class(self.get_class_name_from_raw(x), self.get_class_period_from_raw(x), self.get_class_semester_from_raw(x), self.get_teacher_from_raw(x)))
- return class_list
- @staticmethod
- def get_class_period_from_raw(raw_class_html):
- soup = BeautifulSoup(str(raw_class_html), 'lxml')
- period = soup.find_all('td')[2]
- period = str(period).replace('<td>','')
- period = period.replace('</td>', '')
- period = period.replace(' ', '')
- return period
- @staticmethod
- def get_class_semester_from_raw(raw_class_html):
- raw_class_html = str(raw_class_html)
- if 'Q1' in raw_class_html:
- return 1
- elif 'Q3' in raw_class_html:
- return 2
- @staticmethod
- def get_class_name_from_raw(raw_class_html):
- soup = BeautifulSoup(str(raw_class_html), 'lxml')
- name = soup.a
- name = str(name)
- name = name[name.index(";\">")+3:name.index("</a>")]
- return name
- @staticmethod
- def get_teacher_from_raw(raw_class_html):
- soup = BeautifulSoup(str(raw_class_html), 'lxml')
- teacherTd = soup.findAll('td')[3]
- teacher = str(teacherTd).replace('<td>','')
- teacher = teacher.replace('</td>', '')
- return teacher
- def get_class(self, semester, period):
- if int(period) in range(4,7):
- period = str(period)
- period = period + 'A-' + period + 'B'
- for x in self.classes:
- if x.period == period and x.semester == semester:
- return x
- return 'None'
- class Class:
- def __init__(self, class_name, period, semester, teacher):
- self.class_name = class_name
- self.period = period
- self.semester = semester
- self.teacher = teacher
- home = HomeAccess(username, password)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement