J'ai donc écrit un code pour récupérer les résultats de mes examens lorsqu'ils seront publiés sur le site Web. Mais je ne peux pas comprendre comment afficher les résultats au format subjectName: subjectResults.
Ma sortie est quelque chose comme ça,
Résultats trouvés b '{"exam": "G.C.E. (O / L) EXAMEN "," année ":" 2018 "," nom ":" NANAYAKKARA IGALA ARACHCHIGE NAVINDU THARUKA PERERA "," indexNo ":" 80299920 "," nic ": null," districtRank ": null," islandRank ": null," marks ": null," status ": null," zScore ": null," stream " : null, "subjectResults": [{"subjectName": "BUDDHISM", "subjectResult": "A"}, {"subjectName": "SINHALA LANGUAGE & LITT. "," SubjectResult ":" A "}, {" subjectName ":" ANGLAIS LANGUAGE "," subjectResult ":" A "}, {" subjectName ":" MATHEMATICS "," subjectResult ":" A "}, {" subjectName ":" HISTORY "," subjectResult ":" A "}, {" subjectName ":" SCIENCE "," subjectResult ":" B "}, {" subjectName ":" DRAMA & THEATRE (SINHALA) "," subjectResult ":" A "}, {" subjectName ":" BUSINESS & ACCT. ÉTUDES "," subjectResult ":" A "}, {" subjectName ":" INFOR. & COMM. TECHNOLOGIE "," subjectResult ":" A "}]," studentInfo ": [{" param ":" Examination "," value ":" G.C.E. (O / L) EXAMEN "}, {" param ":" Year "," value ":" 2018 "}, {" param ":" Name "," value ":" NANAYAKKARA IGALA ARACHCHIGE NAVINDU THARUKA PERERA "}, {" param ":" Index Number "," value ":" 80299920 "}, {" param ":" NIC Number "," value ":" "}]} '
Je n'ai besoin que des sujets et de leurs résultats listés ligne par ligne.
Voici mon script
import requests
import re
import time
index_number = "80299920"
URL = f'https://result.doenets.lk/result/service/OlResult?index={index_number}&nic='
while True:
try:
req = requests.get(URL)
x = req.content.decode('utf-8')
search = re.findall(r'\"subjectResults\":\[]', x)
if search:
print("No results yet")
time.sleep(0.001)
continue
else:
print("Results found")
res = requests.get(f'https://result.doenets.lk/result/service/OlResult?index={index_number}&nic=')
results=res.content
print(results)
exit()
except Exception:
print("ok")
3 Réponses :
Le résultat est au format JSON , vous pouvez donc l'analyser et l'utiliser comme python dict
res = requests.get(...)
result = res.get_json() # or result = json.loads(res.text)
for item in result['subjectResults']:
print(item['subjectName'] + ":" + item['subjectResult'])
# Printing
BUDDHISM:A
SINHALA LANGUAGE & LITT.:A
ENGLISH LANGUAGE:A
MATHEMATICS:A
HISTORY:A
SCIENCE:B
DRAMA & THEATRE(SINHALA):A
BUSINESS & ACCT. STUDIES:A
INFOR. & COMM. TECHNOLOGY:A
Votre chaîne est un json, vous pouvez donc la charger en tant que dict python et parcourir vos résultats.
import json
results = b'{"examination":"G.C.E. (O/L) EXAMINATION","year":"2018","name":"NANAYAKKARA IGALA ARACHCHIGE NAVINDU THARUKA PERERA","indexNo":"80299920","nic":null,"districtRank":null,"islandRank":null,"marks":null,"status":null,"zScore":null,"stream":null,"subjectResults":[{"subjectName":"BUDDHISM","subjectResult":"A"},{"subjectName":"SINHALA LANGUAGE & LITT.","subjectResult":"A"},{"subjectName":"ENGLISH LANGUAGE","subjectResult":"A"},{"subjectName":"MATHEMATICS","subjectResult":"A"},{"subjectName":"HISTORY","subjectResult":"A"},{"subjectName":"SCIENCE","subjectResult":"B"},{"subjectName":"DRAMA & THEATRE(SINHALA)","subjectResult":"A"},{"subjectName":"BUSINESS & ACCT. STUDIES","subjectResult":"A"},{"subjectName":"INFOR. & COMM. TECHNOLOGY","subjectResult":"A"}],"studentInfo":[{"param":"Examination","value":"G.C.E. (O/L) EXAMINATION"},{"param":"Year","value":"2018"},{"param":"Name","value":"NANAYAKKARA IGALA ARACHCHIGE NAVINDU THARUKA PERERA"},{"param":"Index Number","value":"80299920"},{"param":"NIC Number","value":""}]}'
result_dict = json.loads(results)
for subject in result_dict['subjectResults']:
print('Name: ', subject['subjectName'])
print('Result: ', subject['subjectResult'])
print()
# prints
"""
Name: BUDDHISM
Result: A
Name: SINHALA LANGUAGE & LITT.
Result: A
Name: ENGLISH LANGUAGE
Result: A
Name: MATHEMATICS
Result: A
Name: HISTORY
Result: A
Name: SCIENCE
Result: B
Name: DRAMA & THEATRE(SINHALA)
Result: A
Name: BUSINESS & ACCT. STUDIES
Result: A
Name: INFOR. & COMM. TECHNOLOGY
Result: A
"""
Une réponse sans explication ne vaut rien;)
Quelque chose comme ceci:
import requests
import re
import time
index_number = "80299920"
URL = f'https://result.doenets.lk/result/service/OlResult?index={index_number}&nic='
while True:
req = requests.get(URL)
results = req.content
if b"subjectResults" in results:
for course in json.loads(results)['subjectResults']:
print(f"{course['subjectResult']:2} {course['subjectName']}")
break
time.sleep(300)
Veuillez donner une explication, les réponses basées uniquement sur le code ne valent pas grand-chose