#Ce programme répond automatiquement à une partie des questionnaire QUIA posé par certains profs d'anglais #Voir le readme pour plus de détail sur son utilisation user="tonnomdecompte" password="tonmotdepasse" teacherURL="http://www.quia.com/pages/jmellor/page190-aremplacerparlapageavectesquestionnaires" #Ne rien toucher à partir de là import requests import time from bs4 import BeautifulSoup s=requests.Session() def extractQ(text): soup = BeautifulSoup(text) data = {} for tag in soup.findAll('li'): q = tag.get_text() q = q[:(len(q)-10)] tag = tag.prettify() k = 0 field = "" while "" not in ans: ans = ans + q[k] k = k+1 ans = "" while q[k]!="<": ans = ans + q[k] k = k+1 while ans[1] in excluded: ans = ans[1:] ans = ans[1:] while ans[len(ans)-1] in excluded: ans=ans[:(len(ans)-1)] data[ques]=ans return data def solve(URL): urlID="" k=1 while "quiz/" not in urlID: urlID=urlID+URL[k] k=k+1 urlID="" while URL[k]!=".": urlID=urlID+URL[k] k=k+1 formdata={'playStart': 'urlID', 'c_registrarId': '-1', 'bookCustomizationId': '-1', 'tagStartQuiz': 'Start now', 'classId': '-1', 'courseObjectId': '-1', 'AP_continuePlay': 'true', 'tag_quiz_password': password, 'activityId': '11754801', 'bookPageId': '-1', 'mode': '0', 'tag_quiz_username': user, 'AP_skipLoginPage': 'true'} r = s.post(URL,data=formdata) output = r.text stateKey="" k=1 while "AP_stateKey\" VALUE=\"" not in stateKey: stateKey=stateKey+output[k] k=k+1 stateKey="" while output[k]!="\"": stateKey=stateKey+output[k] k=k+1 question = extractQ(r.text) ansdata={"AP_continuePlay":"true","AP_stateKey":stateKey,"SessionId":"null", "urlId":urlID,"tag_submit_all_at_once":"Sudmit answers"} for k in question.keys(): ansdata[question[k]]="a" r2 = s.post(URL,data=ansdata) answer = extractA(r2.text) r = s.post(URL,data=formdata) output = r.text stateKey="" k=1 while "AP_stateKey\" VALUE=\"" not in stateKey: stateKey=stateKey+output[k] k=k+1 stateKey="" while output[k]!="\"": stateKey=stateKey+output[k] k=k+1 question = extractQ(r.text) ansdata={"AP_continuePlay":"true","AP_stateKey":stateKey,"SessionId":"null", "urlId":urlID,"tag_submit_all_at_once":"Sudmit answers"} for k in question.keys(): ansdata[question[k]]=answer[k] r3 = s.post(URL,data=ansdata) print("one done") def execpage(): r=s.get(teacherURL) soup = BeautifulSoup(r.text) for link in soup.find_all('a'): url = link.get('href') if (url!=None) and ("quiz/" in url): try: solve(url) except: None execpage()