De openbare doctoraatsverdediging is het sluitstuk van een doctoraatstraject en vindt plaats na een voorverdediging mits goedkeuring van de jury. Als een doctoraatsstudent een openbare verdediging mag afleggen, betekent dit vrijwel altijd dat hij zal slagen.
Meestal nodigt de promovendus op de openbare verdediging niet alleen collega's en professoren uit, maar ook vrienden en familie. Voor vrienden en familie die niet thuis zijn in het domein van het doctoraat, is die verdediging soms moeilijk te volgen, maar na afloop van de verdediging wordt aan de genodigden meestal een drankje en een hapje aangeboden.
Een aantal studenten hebben ontdekt dat die feestjes na de verdedigingen altijd goed verzorgd zijn en dat er vrijwel geen toegangscontrole is. Ze hebben besloten om te gaan party-crashen.
Om een en ander te vergemakkelijken willen ze een webscraper programmeren, die automatisch het tijdstip van de doctoraatsverdedigingen aan verschillende faculteiten afhaalt van de website van UGent en importeert in hun kalenderapplicatie. De import in de kalenderapp moeten jullie niet programmeren, maar wel de webscraper.
Elke faculteit heeft een pagina waarop de geplande doctoraatsverdedigingen aangekondigd staan. De url van deze webpagina's kan je samenstellen op basis van de afkorting van de faculteit.
Voorbeelden:
De pagina's hierboven worden dagelijks aangepast. Op sommige momenten kan voor een bepaalde faculteit de lijst leeg zijn.
Daarom hebben we voor deze oefening een aantal pagina's nagebootst op een eigen webserver. De data zijn fictief, en de lay-out is niet 100%, maar de html-code voor de tabel met doctoraatsverdedigingen is identiek aan de oorspronkelijk webpagina's van de UGent website. Gebruik in je oefening deze url (let op de positie van de faculteitscode):
Faculteit Economie en Bedrijfskunde (code = "eb"): https://ebapps.ugent.be/maninf/phd-crashing/eb.html4
Faculteit Wetenschappen (code = "we"): https://ebapps.ugent.be/maninf/phd-crashing/we.html5
Schrijf een functie get_defence_dates met één argument: de code van de faculteit (een string).
De functie leest een webpagina in van de url zoals hierboven beschreven en retourneert een lijst met strings. Elke string in de lijst komt overeen met een doctoraatsverdediging en is opgebouwd zoals in het volgende voorbeeld (let op, voornaam komt voor familienaam).
Voorbeeld: '26-05-2018 17:30 Foster Provost'
Je mag uitgaan van volgende veronderstellingen:
Schermafdruk van de pagina https://ebapps.ugent.be/maninf/phd-crashing/eb.html
>>> get_defence_dates('eb') ['26-05-2018 17:30 Foster Provost', '05-10-2018 17:00 Tom Fawcett', '23-10-2018 17:00 Ian Witten', '02-11-2018 18:00 Eibe Frank']