Téléchargez le PDF de la question précédente de Basic Information Engineer Examination (FE) en utilisant le package urllib de Python.
Les dernières questions de l'examen d'ingénieur en information de base sont [publiées] sur le site Web officiel de l'IPA (https://www.jitec.ipa.go.jp/1_04hanni_sukiru/_index_mondai.html). Cependant, des questions et réponses sont publiées pour chaque année, et vous devez vous rendre sur la page de chaque année et les télécharger. Pour éviter ce problème, utilisez le package urllib de Python pour télécharger des questions et des réponses à la fois.
En regardant les pages publiées dans les questions précédentes, par exemple, l'URL de l'examen du printemps 2015 est la suivante.
La structure de l'URL de la question précédente est
https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_
En plus de
[Calendrier occidental] [Calendrier japonais] _ [1 OU 2] / [Calendrier occidental] [Calendrier japonais] [h OU a] _fe_ [am OU pm] _ [qs OR ans OU cmnt] .pdf
On peut voir que
J'ai écrit le code en utilisant beaucoup d'instructions for sans trop réfléchir.
kakomon.py
import urllib.request
def download():
#Partie commune (première moitié) de l'URL
urlbase = "https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_"
#Printemps et automne
season = {1:"h", 2:"a"}
# 2009-Téléchargez le PDF 2019 (questions / réponses / commentaires)
for y in range(2009,2020):
nendo = str(y) + "h" + str(y - 1988) #Exemple: 2009h21
for s in range(1,3):
for t in ["am","pm"]:
if t == "pm": #Commentaire uniquement l'après-midi
try:
url = urlbase + nendo + "_" + str(s) + "/" + nendo + season[s] + "_fe_" + t + "_cmnt.pdf"
filename = nendo + season[s] + "_fe_" + t + "_cmnt.pdf"
urllib.request.urlretrieve(url,"{0}".format(filename))
except urllib.error.HTTPError:
print("Error: " + filename) #Afficher les noms de fichiers qui n'ont pas pu être téléchargés
for qa in ["qs","ans"]:
try:
url = urlbase + nendo + "_" + str(s) + "/" + nendo + season[s] + "_fe_" + t + "_" + qa + ".pdf"
filename = nendo + season[s] + "_fe_" + t + "_" + qa + ".pdf"
urllib.request.urlretrieve(url,"{0}".format(filename))
except urllib.error.HTTPError:
print("Error: " + filename) #Afficher les noms de fichiers qui n'ont pas pu être téléchargés
if __name__ == "__main__":
download()
Lorsque ce qui précède est exécuté, le fichier PDF est obtenu et le message d'erreur suivant s'affiche (au 30 décembre 2019).
Error: 2011h23h_fe_am_qs.pdf
Error: 2011h23h_fe_am_ans.pdf
Error: 2011h23h_fe_pm_cmnt.pdf
Error: 2011h23h_fe_pm_qs.pdf
Error: 2011h23h_fe_pm_ans.pdf
Error: 2019h31a_fe_am_qs.pdf
Error: 2019h31a_fe_am_ans.pdf
Error: 2019h31a_fe_pm_cmnt.pdf
Error: 2019h31a_fe_pm_qs.pdf
Error: 2019h31a_fe_pm_ans.pdf
Cela est dû aux deux faits suivants.
Il est nécessaire de télécharger ou de réécrire manuellement le programme ci-dessus pour obtenir les questions précédentes de l'année et du moment où une erreur s'est produite, c'est-à-dire une exception de programme. Par exemple, l'auteur a utilisé le programme suivant.
kakomon_revised.py
import urllib.request
def download():
#Partie commune (première moitié) de l'examen spécial 2011 et URL de l'examen d'automne 2019 et partie commune du nom de fichier
urlbase = {"https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2011h23_1/2011h23tokubetsu_fe_":"2011h23tokubetsu_fe_",
"https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2019h31_2/2019r01a_fe_":"2019r01a_fe_"}
#Téléchargez le PDF (questions, réponses, commentaires) pour l'examen spécial 2011 et l'examen d'automne 2019
for u in urlbase:
for t in ["am","pm"]:
if t == "pm": #Commentaire uniquement l'après-midi
try:
url = u + t + "_cmnt.pdf"
filename = urlbase[u] + t + "_cmnt.pdf"
urllib.request.urlretrieve(url,"{0}".format(filename))
except urllib.error.HTTPError:
print("Error: " + filename) #Afficher les noms de fichiers qui n'ont pas pu être téléchargés
for qa in ["qs","ans"]:
try:
url = u + t + "_" + qa + ".pdf"
filename = urlbase[u] + t + "_" + qa + ".pdf"
urllib.request.urlretrieve(url,"{0}".format(filename))
except urllib.error.HTTPError:
print("Error: " + filename) #Afficher les noms de fichiers qui n'ont pas pu être téléchargés
if __name__ == "__main__":
download()
Il y a un changement dans l'examen de l'après-midi par rapport à la 2ème année de Reiwa, et le langage de programmation semble être COBOL est aboli et Python est ajouté. Le nombre de questions, le nombre de réponses, les points attribués, etc. changeront également.