Skip to content

Instantly share code, notes, and snippets.

@AnirudhKonduru
Created July 7, 2017 11:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save AnirudhKonduru/05a69a808948f0f828921071ee848851 to your computer and use it in GitHub Desktop.
Save AnirudhKonduru/05a69a808948f0f828921071ee848851 to your computer and use it in GitHub Desktop.
Fetches multiple results from PES University's results page.
#!/usr/bin/env python3
import requests as rq
from bs4 import BeautifulSoup as BS
import time
import sys
students_list = []
base_url="https://www.pesuacademy.com/Academy/tr/result/"
print("Enter base usn and range (Example: 01FB15EME 1-200)")
base_usn,rang=input().split()
print("Enter roll no range (Example: 1-200 )")
range_start, range_end = rang.split("-")
id=1;
usn_list=[base_usn+"%03d"%i for i in range(int(range_start),int(range_end))]
print("Output File Name: [Press Enter for default name {}.txt]".format(base_usn))
op_file_name = input()
class Student(object):
def __init__(self,usn):
self.usn=usn
self.taken=-1
self.earned=-1
self.sgpa=-1
self.grades={}
def __str__(self):
res = "USN: "+self.usn+"\n"
res += "\tTaken: "+self.taken+"\n"
res += "\tEarned: "+self.earned+"\n"
res += "\tSgpa: "+self.sgpa+"\n"
res += "\tGrades: "+str(self.grades)+"\n"
return res
def __repr__(self):
return self.__str__()
def printProgress(i, n):
#index from 1 instead of 0
i+=1
percent = float(i)*100/n
sys.stdout.write("\rGetting result {0}/{1} [{2:.2f}%]".format(i,n,percent))
session=rq.session()
for i in range(len(usn_list)):
usn=usn_list[i]
url = base_url+usn
r = session.get(url, verify=False)
if(r.text==''):
print("\r----", usn, "not found!")
continue;
json=r.json()
results=json["results"]
s = Student(json["usn"])
for x in results:
if(x["subjectCode"]=="TAKEN"):
s.taken=x["grade"]
elif(x["subjectCode"]=="EARNED"):
s.earned=x["grade"]
elif(x["subjectCode"]=="SGPA"):
s.sgpa=x["grade"]
else:
s.grades[x["subjectCode"]]=x["grade"]
printProgress(i, len(usn_list));
students_list.append(s)
print("Number of Results Found: ", len(students_list))
print("Made with \u2661 by BabaKondu\n\n")
if(op_file_name==""):
f = open("results_"+base_usn+".txt","w+")
else:
f = open(op_file_name,"w+")
f.write("Made with \u2661 by BabaKondu\n\n")
for s in students_list:
f.write(str(s)+'\n')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment