def login(regno, password): res = [] print "Parsing captcha for you." res = req.get(captcha_url, stream = True) cookies = res.cookies with open('captcha.bmp', 'wb') as out_file: shutil.copyfileobj(res.raw, out_file) img = Image.open("captcha.bmp") parser = CaptchaParser() captcha = parser.getCaptcha(img) data = {} data['message'] = ""; data['regno'] = regno data['passwd'] = password data['vrfcd'] = captcha print "Logging In..." login_res = req.post(submit_url, data = data, cookies = cookies, timeout = 40) soup = BeautifulSoup(login_res.text, "html.parser") try: x = ((soup.findAll('table')[1]).td.font.string.split(" - "))[1] if x == regno: success = True req.get(home_url, cookies = cookies, timeout = 40) # just to make sure that session id is validated res = [success, cookies] return res else: success = False res = [success, None] return res except: success = False res = [success, None] return res
def login(): if os.path.isfile('cre.json'): with open('cre.json', 'r') as f: data = json.load(f) regno = data['username'] passw = data['password'] else: regno = raw_input("Registration Number: ") passw = raw_input("Password: "******"Fetching Captcha" r = br.open('https://vtop.vit.ac.in/student/stud_login.asp') html = r.read() soup = BeautifulSoup(html) im = soup.find('img', id='imgCaptcha') image_response = br.open_novisit(im['src']) img = Image.open(StringIO(image_response.read())) imgcpy = img.copy() starttime = timeit.default_timer() parser = CaptchaParser() captcha = parser.getCaptcha(img) stoptime = timeit.default_timer() print "Recognized Captcha:" + str(captcha) + " in " + str(stoptime - starttime) formdata = {"regno": regno, "passwd": passw, "vrfcd": str(captcha)} data_encoded = urllib.urlencode(formdata) response = opener.open( 'https://vtop.vit.ac.in/student/stud_login_submit.asp', data_encoded) print "Logging in User:"******"https://vtop.vit.ac.in/student/home.asp"): print "Success!" else: print '''Failed :( Either Username or Password is wrong or there is some fault in decoding captcha try again''' return opener
def login(): if os.path.isfile('cre.json'): with open('cre.json', 'r') as f: data = json.load(f) regno = data['username'] passw = data['password'] else: regno=raw_input("Registration Number: ") passw=raw_input("Password: "******"Fetching Captcha" r=br.open('https://vtop.vit.ac.in/student/stud_login.asp') html=r.read() soup=BeautifulSoup(html) im = soup.find('img', id='imgCaptcha') image_response = br.open_novisit(im['src']) img=Image.open(StringIO(image_response.read())) imgcpy=img.copy() starttime = timeit.default_timer() parser=CaptchaParser() captcha=parser.getCaptcha(img) stoptime = timeit.default_timer() print "Recognized Captcha:"+str(captcha)+" in "+str(stoptime-starttime) formdata = { "regno" : regno, "passwd": passw, "vrfcd" : str(captcha) } data_encoded = urllib.urlencode(formdata) response = opener.open('https://vtop.vit.ac.in/student/stud_login_submit.asp', data_encoded) print "Logging in User:"******"https://vtop.vit.ac.in/student/home.asp"): print"Success!" else: print '''Failed :( Either Username or Password is wrong or there is some fault in decoding captcha try again''' return opener
def login(reg_no="",pwd=""): from bs4 import BeautifulSoup from CaptchaParser import CaptchaParser from PIL import Image import json, mechanize, datetime #handeling browser and browser initialisation br = mechanize.Browser() br.set_handle_robots(False) br.set_handle_equiv(True) br.set_handle_gzip(True) br.set_handle_redirect(True) br.set_handle_referer(True) #opening website response = br.open("https://academics.vit.ac.in/student/stud_login.asp") #print br.geturl() #selecting the login form br.select_form("stud_login") #extracting captcha url soup = BeautifulSoup(response.get_data()) img = soup.find('img', id='imgCaptcha') print img['src'] #retrieving captcha image br.retrieve("https://academics.vit.ac.in/student/"+img['src'], "captcha_student.bmp") print "captcha retrieved" img = Image.open("captcha_student.bmp") parser = CaptchaParser() captcha = parser.getCaptcha(img) print str(captcha) #fill form br["regno"] = str(reg_no) br["passwd"] = str(pwd) br["vrfcd"] = str(captcha) #submitting the values and signing in br.method = "POST" response = br.submit() try: br.open("https://academics.vit.ac.in/student/stud_home.asp") br.select_form("stud_riviera") br.submit(label = "Skip Now") except: print "ss" return br
def login(): br = mechanize.Browser() br.set_handle_robots(False) br.set_handle_redirect(True) br.set_handle_referer(True) try: _create_unverified_https_context = ssl._create_unverified_context except AttributeError: pass else: ssl._create_default_https_context = _create_unverified_https_context cj = cookielib.CookieJar() br.set_cookiejar(cj) response = br.open('https://vtop.vit.ac.in/student/stud_login.asp') print 'Opened Login Form' html = response.read() soup = BeautifulSoup(html) im = soup.find('img', id='imgCaptcha') image_response = br.open_novisit(im['src']) img = Image.open(StringIO(image_response.read())) parser = CaptchaParser() captcha = parser.getCaptcha(img) br.select_form('stud_login') br.form['regno'] = REGNO br.form['passwd'] = PASSWORD br.form['vrfcd'] = str(captcha) print br.form print str(captcha) + ' Captcha Parsed' br.submit() print br print 'Submitted' if (br.geturl() == 'https://vtop.vit.ac.in/student/home.asp'): puts(colored.yellow("LOGIN SUCCESSFUL")) return br else: print 'Could not login' return None
def login(): br = mechanize.Browser() br.set_handle_redirect(True) br.set_handle_referer(True) cj = cookielib.CookieJar() br.set_cookiejar(cj) response = br.open('https://academics.vit.ac.in/student/stud_login.asp') html = response.read() soup = BeautifulSoup(html) im = soup.find('img', id='imgCaptcha') image_response = br.open_novisit(im['src']) img = Image.open(StringIO(image_response.read())) parser = CaptchaParser() captcha = parser.getCaptcha(img) br.select_form('stud_login') br.form['regno'] = REGNO br.form['passwd'] = PASSWORD br.form['vrfcd'] = str(captcha) br.submit() if (br.geturl() == 'https://academics.vit.ac.in/student/home.asp'): puts(colored.yellow("LOGIN SUCCESSFUL")) return br else: return None
br.set_handle_equiv(True) br.set_handle_redirect(True) br.set_handle_referer(True) br.set_handle_robots(False) print "Fetching Captcha" r = br.open('https://academics.vit.ac.in/parent/parent_login.asp') html = r.read() soup = BeautifulSoup(html) im = soup.find('img', id='imgCaptcha') image_response = br.open_novisit(im['src']) img = Image.open(StringIO(image_response.read())) imgcpy = img.copy() starttime = timeit.default_timer() parser = CaptchaParser() captcha = parser.getCaptcha(img) stoptime = timeit.default_timer() print "Recognized Captcha:" + str(captcha) + " in " + str(stoptime - starttime) br.select_form('parent_login') regno = raw_input("Registration Number:") dob = raw_input("Date of Birth:") br.form['wdregno'] = regno br.form['vrfcd'] = str(captcha) br.form['wdpswd'] = dob print "Logging in User:" + str(regno)
from CaptchaParser import CaptchaParser import timeit from PIL import Image f = [] for (dirpath, dirnames, filenames) in walk('samples'): f.extend(filenames) break timesum=0 size=len(f) count=1 maxtime=0 mintime=100 currtime=0 for im in f: img=Image.open("samples/"+str(im)) c=CaptchaParser() starttime = timeit.default_timer() print "CAPTCHA:"+c.getCaptcha(img) endtime = timeit.default_timer() currtime=endtime-starttime if(currtime>maxtime): maxtime=currtime maximg=img.copy() print "new max:"+str(maxtime) if(currtime<mintime): mintime=currtime minimg=img.copy() print "new min:"+str(mintime) timesum+=currtime print "Comparing image "+str(count)+"/"+str(size)
def login(reg_no="",pwd=""): #importing the required modules from bs4 import BeautifulSoup from CaptchaParser import CaptchaParser from PIL import Image import mechanize import os #handeling browser and browser initialisation br = mechanize.Browser() br.set_handle_robots(False) br.set_handle_equiv(True) br.set_handle_gzip(True) br.set_handle_redirect(True) br.set_handle_referer(True) #opening website response = br.open("https://vtop.vit.ac.in/student/stud_login.asp") #print br.geturl() #selecting the login form br.select_form("stud_login") #extracting captcha url soup = BeautifulSoup(response.get_data()) img = soup.find('img', id='imgCaptcha') #print img['src'] #retrieving captcha image br.retrieve("https://vtop.vit.ac.in/student/"+img['src'], reg_no+".bmp") print "captcha retrieved" #opening the image img = Image.open(reg_no+".bmp") #parsing the image and getting its string value parser = CaptchaParser() captcha = parser.getCaptcha(img) print str(captcha) os.remove(reg_no+".bmp") #filling form br["regno"] = str(reg_no) br["passwd"] = str(pwd) br["vrfcd"] = str(captcha) #submitting the values and signing in br.method = "POST" response = br.submit() #during the time of rivera try: br.open("https://vtop.vit.ac.in/student/stud_home.asp") br.select_form("stud_riviera") br.submit(label = "Skip Now") print "Login_Sucess" #for normal login except: print "Login_Sucess" return br
def get_timetable(reg_no = "", pwd = "", mob_num = ""): import mechanize, json, datetime from bs4 import BeautifulSoup from CaptchaParser import CaptchaParser from PIL import Image #browser initialise br = mechanize.Browser() br.set_handle_robots(False) br.set_handle_equiv(True) br.set_handle_gzip(True) br.set_handle_redirect(True) br.set_handle_referer(True) #open website # response = br.open("https://academics.vit.ac.in/student/stud_login.asp") response = br.open("https://academics.vit.ac.in/parent/parent_login.asp") print br.geturl() #select form br.select_form("parent_login") #extracting captcha url soup = BeautifulSoup(response.get_data()) img = soup.find('img', id='imgCaptcha') #retrieving captcha image br.retrieve("https://academics.vit.ac.in/parent/"+img['src'], "captcha_parent.bmp") # print str("https://academics.vit.ac.in/parent/"+img['src'], "captcha_parent") img = Image.open("captcha_parent.bmp") parser = CaptchaParser() captcha = parser.getCaptcha(img) #fill form br["wdregno"] = str(reg_no) br["wdpswd"] = str(pwd) br["wdmobno"] = str(mob_num) br["vrfcd"] = str(captcha) br.method = "POST" br.submit() if br.geturl()==("https://academics.vit.ac.in/parent/home.asp"): print "SUCCESS" br.open("https://academics.vit.ac.in/parent/parent_home.asp") #opening timetable page response = br.open("https://academics.vit.ac.in/parent/timetable.asp?sem=WS") soup = BeautifulSoup(response.get_data()) #extrating timetable time_table = {} for i in range(2,7): day = {} for j in range(1,13): day[j] = soup('table')[2].findAll("tr")[i].findAll("td")[j].getText().encode('utf-8').replace("\xc2\xa0", " ") if len(day[j]) > 10: pass else: day[j] = 0 time_table[i-1] = day return {"status":"Success","timetable":time_table} else : print "FAIL" return {"status":"Failure"}
def get_atten(reg_no="", pwd="", mob_num=""): import mechanize, json, datetime, pytz from bs4 import BeautifulSoup from CaptchaParser import CaptchaParser from PIL import Image #browser initialise br = mechanize.Browser() br.set_handle_robots(False) br.set_handle_equiv(True) br.set_handle_gzip(True) br.set_handle_redirect(True) br.set_handle_referer(True) #open website # response = br.open("https://academics.vit.ac.in/student/stud_login.asp") response = br.open("https://vtop.vit.ac.in/parent/parent_login.asp") print br.geturl() #select form br.select_form("parent_login") #extracting captcha url soup = BeautifulSoup(response.get_data()) img = soup.find('img', id='imgCaptcha') #retrieving captcha image br.retrieve("https://vtop.vit.ac.in/parent/" + img['src'], "captcha_parent.bmp") # print str("https://academics.vit.ac.in/parent/"+img['src'], "captcha_parent") img = Image.open("captcha_parent.bmp") parser = CaptchaParser() captcha = parser.getCaptcha(img) #fill form br["wdregno"] = str(reg_no) br["wdpswd"] = str(pwd) br["wdmobno"] = str(mob_num) br["vrfcd"] = str(captcha) br.method = "POST" br.submit() if br.geturl() == ("https://vtop.vit.ac.in/parent/home.asp"): print "SUCCESS" #attendance page months = { 1: "Jan", 2: "Feb", 3: "Mar", 4: "Apr", 5: "May", 6: "Jun", 7: "Jul", 8: "Aug", 9: "Sep", 10: "Oct", 11: "Nov", 12: "Dec" } atten = {} br.open("https://vtop.vit.ac.in/parent/attn_report.asp?sem=WS") response = br.open( "https://vtop.vit.ac.in/parent/attn_report.asp?sem=WS") soup = BeautifulSoup(response.get_data()) br.select_form(nr=0) inputTag = soup.find(attrs={"name": "from_date"}) from_date = inputTag['value'] tz = pytz.timezone('Asia/Kolkata') now = datetime.datetime.now(tz) to_date = str(now.day) + "-" + months[now.month] + "-" + str(now.year) response = br.open( "https://vtop.vit.ac.in/parent/attn_report.asp?sem=WS&fmdt=%(from_date)s&todt=%(to_date)s" % { "from_date": from_date, "to_date": to_date }) soup = BeautifulSoup(response.get_data()) tables = soup.findAll("table") trs = soup.findAll("table")[len(tables) - 2].findAll("tr") for i in range( 1, len(trs)): #it should be len(trs) -1 but it works w/o -1 a_course_code = soup.findAll("table")[len(tables) - 2].findAll( "tr")[i].findAll("td")[1].getText().encode('utf-8').replace( "\xc2\xa0", " ") a_attend_percentage = soup.findAll("table")[ len(tables) - 2].findAll("tr")[i].findAll( "td")[8].getText().encode('utf-8').replace( "\xc2\xa0", " ") if a_course_code not in atten.keys(): atten[a_course_code] = [a_attend_percentage] else: atten[a_course_code + "_L"] = [a_attend_percentage] return {"Status": "sucess", "attendance": atten}
import timeit from PIL import Image f = [] for (dirpath, dirnames, filenames) in walk('samples'): f.extend(filenames) break timesum=0 size=len(f) count=1 maxtime=0 mintime=100 currtime=0 correctCount = -1 for im in f: img=Image.open("samples/"+str(im)) c=CaptchaParser() starttime = timeit.default_timer() capcthaText = c.getCaptcha(img) print "CAPTCHA: "+capcthaText endtime = timeit.default_timer() currtime=endtime-starttime if(currtime>maxtime): maxtime=currtime maximg=img.copy() print "new max:"+str(maxtime) if(currtime<mintime): mintime=currtime minimg=img.copy() print "new min:"+str(mintime) timesum+=currtime
def get(self, regno, dob): result = memcache.get(regno.upper()) if result != None: self.response.write(json.dumps(result)) return regno = regno.upper() br = _mechanize.Browser() br.set_handle_equiv(True) br.set_handle_redirect(True) br.set_handle_referer(True) br.set_handle_robots(False) r=br.open('https://academics.vit.ac.in/parent/parent_login.asp') html=r.read() soup=BeautifulSoup(html) img = soup.find('img', id='imgCaptcha') image_response = br.open_novisit(img['src']) image = Image.open(StringIO(image_response.read())) parser = CaptchaParser() captcha = parser.getCaptcha(image) br.select_form('parent_login') br.form['wdregno'] = regno br.form['vrfcd'] = str(captcha) br.form['wdpswd'] = dob response = br.submit() if (response.geturl() == "https://academics.vit.ac.in/parent/home.asp"): r=br.open('https://academics.vit.ac.in/parent/timetable.asp?sem=WS') page=r.read() soup=BeautifulSoup(page) trs=soup.findAll('tr') data="" count=0 for tr in trs: if(count!=0): if("Total Credits" in tr.text): break else: tas=tr.findChildren() for ta in tas: data=data+ta.text+"\n" count=count+1 refinedData="" temp=1 for da in data.split("\n"): if (temp==1 and da!=""): refinedData=refinedData+da+"\n" temp=0 else: temp=1 data=refinedData[135:] subs=[] temp=1 sub={} for da in data.split("\n"): if(temp==1): sub.update({"slno":da}) elif(temp==2): sub.update({"cnum":da}) elif(temp==3): sub.update({"code":da}) elif(temp==4): sub.update({"title":da}) elif(temp==6): sub.update({"ltpc":da}) elif(temp==7): sub.update({"bl":da}) elif(temp==9): sub.update({"slot":da}) elif(temp==10): sub.update({"venue":da}) elif(temp==11): sub.update({"faculty":da}) elif(temp==12): sub.update({"billdate":da}) elif(temp==13): temp=0 subs.append(sub) sub={} temp=temp+1 final = {'subjects':subs} t = TimeTable(json.dumps(final)) tt = t.formTT() final = {"subjects":subs} final.update({"timetable":tt}) final.update({"dob":dob}) memcache.set(key = regno, value = final) self.response.write(json.dumps(final))
def get_atten(reg_no = "", pwd = "", mob_num = ""): import mechanize, json, datetime, pytz from bs4 import BeautifulSoup from CaptchaParser import CaptchaParser from PIL import Image #browser initialise br = mechanize.Browser() br.set_handle_robots(False) br.set_handle_equiv(True) br.set_handle_gzip(True) br.set_handle_redirect(True) br.set_handle_referer(True) #open website # response = br.open("https://academics.vit.ac.in/student/stud_login.asp") response = br.open("https://vtop.vit.ac.in/parent/parent_login.asp") print br.geturl() #select form br.select_form("parent_login") #extracting captcha url soup = BeautifulSoup(response.get_data()) img = soup.find('img', id='imgCaptcha') #retrieving captcha image br.retrieve("https://vtop.vit.ac.in/parent/"+img['src'], "captcha_parent.bmp") # print str("https://academics.vit.ac.in/parent/"+img['src'], "captcha_parent") img = Image.open("captcha_parent.bmp") parser = CaptchaParser() captcha = parser.getCaptcha(img) #fill form br["wdregno"] = str(reg_no) br["wdpswd"] = str(pwd) br["wdmobno"] = str(mob_num) br["vrfcd"] = str(captcha) br.method = "POST" br.submit() if br.geturl()==("https://vtop.vit.ac.in/parent/home.asp"): print "SUCCESS" #attendance page months = {1:"Jan", 2:"Feb", 3:"Mar", 4:"Apr", 5:"May", 6:"Jun", 7:"Jul", 8:"Aug", 9:"Sep", 10:"Oct", 11:"Nov", 12:"Dec"} atten = {} br.open("https://vtop.vit.ac.in/parent/attn_report.asp?sem=WS") response = br.open("https://vtop.vit.ac.in/parent/attn_report.asp?sem=WS") soup = BeautifulSoup(response.get_data()) br.select_form(nr=0) inputTag = soup.find(attrs={"name": "from_date"}) from_date = inputTag['value'] tz = pytz.timezone('Asia/Kolkata') now = datetime.datetime.now(tz) to_date = str(now.day) + "-" + months[now.month] + "-" + str(now.year) response = br.open("https://vtop.vit.ac.in/parent/attn_report.asp?sem=WS&fmdt=%(from_date)s&todt=%(to_date)s" % {"from_date":from_date, "to_date":to_date} ) soup = BeautifulSoup(response.get_data()) tables = soup.findAll("table") trs = soup.findAll("table")[len(tables)-2].findAll("tr") for i in range(1,len(trs)): #it should be len(trs) -1 but it works w/o -1 a_course_code = soup.findAll("table")[len(tables)-2].findAll("tr")[i].findAll("td")[1].getText().encode('utf-8').replace("\xc2\xa0", " ") a_attend_percentage = soup.findAll("table")[len(tables)-2].findAll("tr")[i].findAll("td")[8].getText().encode('utf-8').replace("\xc2\xa0", " ") if a_course_code not in atten.keys(): atten[a_course_code] = [a_attend_percentage] else: atten[a_course_code+"_L"] = [a_attend_percentage] return {"Status" : "sucess" , "attendance" : atten}
print br.geturl() #select form br.select_form("stud_login") #extracting captcha url soup = BeautifulSoup(response.get_data()) img = soup.find('img', id='imgCaptcha') print img['src'] #retrieving captcha image br.retrieve("https://academics.vit.ac.in/student/"+img['src'], "captcha_student.bmp") print "captcha retrieved" img = Image.open("captcha_student.bmp") parser = CaptchaParser() captcha = parser.getCaptcha(img) print str(captcha) #fill form reg_no="14BCE0104" #fill ur data pwd="gogogogogoogle4" br["regno"] = str(reg_no) br["passwd"] = str(pwd) br["vrfcd"] = str(captcha) br.method = "POST" res=br.submit().read() print br.geturl() if br.geturl()==("https://academics.vit.ac.in/student/home.asp"): print "SUCCESS"
from CaptchaParser import CaptchaParser import timeit from PIL import Image f = [] for (dirpath, dirnames, filenames) in walk('samples'): f.extend(filenames) break timesum = 0 size = len(f) count = 1 maxtime = 0 mintime = 100 currtime = 0 for im in f: img = Image.open("samples/" + str(im)) c = CaptchaParser() starttime = timeit.default_timer() print "CAPTCHA:" + c.getCaptcha(img) endtime = timeit.default_timer() currtime = endtime - starttime if (currtime > maxtime): maxtime = currtime maximg = img.copy() print "new max:" + str(maxtime) if (currtime < mintime): mintime = currtime minimg = img.copy() print "new min:" + str(mintime) timesum += currtime print "Comparing image " + str(count) + "/" + str(size)
def get_class_details(reg_no = "", pwd = "", mob_num = ""): import mechanize, json, datetime from bs4 import BeautifulSoup from CaptchaParser import CaptchaParser from PIL import Image #browser initialise br = mechanize.Browser() br.set_handle_robots(False) br.set_handle_equiv(True) br.set_handle_gzip(True) br.set_handle_redirect(True) br.set_handle_referer(True) #open website response = br.open("https://academics.vit.ac.in/parent/parent_login.asp") print br.geturl() #select form br.select_form("parent_login") #extracting captcha url soup = BeautifulSoup(response.get_data()) img = soup.find('img', id='imgCaptcha') print img['src'] #retrieving captcha image br.retrieve("https://academics.vit.ac.in/parent/"+img['src'], "captcha_parent.bmp") print "captcha retrieved" img = Image.open("captcha_parent.bmp") parser = CaptchaParser() captcha = parser.getCaptcha(img) print str(captcha) #fill form br["wdregno"] = str(reg_no) br["wdpswd"] = str(pwd) br["wdmobno"] = str(mob_num) br["vrfcd"] = str(captcha) br.method = "POST" br.submit() if br.geturl()==("https://academics.vit.ac.in/parent/home.asp"): print "SUCCESS" br.open("https://academics.vit.ac.in/parent/parent_home.asp") #opening academic history page response = br.open("https://academics.vit.ac.in/parent/student_history.asp") soup = BeautifulSoup(response.get_data()) #extracting past grades curr_year = datetime.date.today().year curr_month = datetime.date.today().month past_grades = {} months = {"Jan":1, "Feb":2, "Mar":3, "Apr":4, "May":5, "Jun":6, "Jul":7, "Aug":8, "Sep":9, "Oct":10, "Nov":11, "Dec":12} for i in range(1,len(soup('table')[2].findAll("tr"))): exam_date = soup('table')[2].findAll("tr")[i].findAll("td")[6].getText().encode('utf-8').replace("\xc2\xa0", " ") exam_month = months[exam_date[:3]] exam_year = int(exam_date[4:8]) course_grade = soup('table')[2].findAll("tr")[i].findAll("td")[5].getText().encode('utf-8').replace("\xc2\xa0", " ") if curr_month < 6: if (exam_year == curr_year - 1) and (course_grade == "A" or course_grade == "S"): course_code = soup('table')[2].findAll("tr")[i].findAll("td")[1].getText().encode('utf-8').replace("\xc2\xa0", " ") #this part can be reduced course_title = soup('table')[2].findAll("tr")[i].findAll("td")[2].getText().encode('utf-8').replace("\xc2\xa0", " ") past_grades[course_code] = course_title elif curr_month > 5: if ((exam_year == curr_year and exam_month < 6) or (exam_year == curr_year - 1 and exam_month > 6)) and (course_grade == "A" or course_grade == "S"): course_code = soup('table')[2].findAll("tr")[i].findAll("td")[1].getText().encode('utf-8').replace("\xc2\xa0", " ") #this part can be reduced course_title = soup('table')[2].findAll("tr")[i].findAll("td")[2].getText().encode('utf-8').replace("\xc2\xa0", " ") past_grades[course_code] = course_title #opening timetable page response = br.open("https://academics.vit.ac.in/parent/timetable.asp?sem=WS") soup = BeautifulSoup(response.get_data()) #extracting class details class_details = {} for i in range(1,len(soup('table')[1].findAll("tr")) - 1): class_nbr = soup('table')[1].findAll("tr")[i].findAll("td")[1].getText().encode('utf-8').replace("\xc2\xa0", " ") course_code = soup('table')[1].findAll("tr")[i].findAll("td")[2].getText().encode('utf-8').replace("\xc2\xa0", " ") course_title = soup('table')[1].findAll("tr")[i].findAll("td")[3].getText().encode('utf-8').replace("\xc2\xa0", " ") course_mode = soup('table')[1].findAll("tr")[i].findAll("td")[6].getText().encode('utf-8').replace("\xc2\xa0", " ") slot = soup('table')[1].findAll("tr")[i].findAll("td")[8].getText().encode('utf-8').replace("\xc2\xa0", " ") class_venue = soup('table')[1].findAll("tr")[i].findAll("td")[9].getText().encode('utf-8').replace("\xc2\xa0", " ") faculty_name = soup('table')[1].findAll("tr")[i].findAll("td")[10].getText().encode('utf-8').replace("\xc2\xa0", " ") class_details[class_nbr] = (slot, course_title, course_code, course_mode, class_venue, faculty_name) return {"status":"Success","class_details":class_details, "past_grades":past_grades} else : print "FAIL" return {"status":"Failure"}