Created
July 7, 2017 11:42
-
-
Save AnirudhKonduru/05a69a808948f0f828921071ee848851 to your computer and use it in GitHub Desktop.
Fetches multiple results from PES University's results page.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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