Ceci est une expérimentation, et n'est pas encore terminé
utiliser Selenium et selenium Python pour automatiser l'utilisation du site https://partners.doctolib.fr/hopital-public/perigueux/vaccination-covid?speciality_id=5494&enable_cookies_consent=1,
vérifier si le site a changé, et m'envoyer un SMS si oui.
Note : je n'avais jamais utilisé selenium ou ce genre de module pour contrôler un navigateur en mode "headless". Ce n'est pas très compliqué, et j'ai trouvé que ce petit tutoriel est bien fait : https://pythonbasics.org/selenium-firefox-headless/ Cette documentation est bien complète, pour le module Python de selenium.
URL = "https://partners.doctolib.fr/hopital-public/perigueux/vaccination-covid?speciality_id=5494&enable_cookies_consent=1"
from selenium import webdriver
try:
print(f"Downloading '{URL}'...")
firefoxOptions = webdriver.FirefoxOptions()
firefoxOptions.headless = True
browser = webdriver.Firefox(options=firefoxOptions)
browser.get(URL)
print(browser.page_source[:500])
finally:
try:
browser.close()
except:
pass
J'ai bien réussi à installer et utiliser Selenium. Ca marche bien !
J'aurai besoin de ces modules là :
import time
from datetime import datetime
import urllib.request
import subprocess
from selenium import webdriver
Vérifions le contenu de la page, et voir si elle affiche ce message suivant :
En raison d'une forte demande, ce centre n'a plus de disponibilités : 3362 vaccinations vont avoir lieu dans les 28 prochains jours. Réessayez prochainement ou cherchez un autre centre.
print(f"Downloading '{URL}'...")
firefoxOptions = webdriver.FirefoxOptions()
firefoxOptions.headless = True
browser = webdriver.Firefox(options=firefoxOptions)
browser.get(URL)
message = "ce centre n'a plus de disponibilités"
if message in browser.page_source:
print(f"{URL} indique :\n{message}")
else:
print(f"{URL} n'indique pas :\n{message}\nPeut être qu'il y a des disponibilités désormais !")
!FreeSMS.py f"{URL} semble indiquer qu'il y a des disponibilités désormais."
Quand on a fini, on ferme le navigateur :
browser.close()
Je ne ferai pas ça dans Python mais avec un simple script bash et un watch
!watch -help
C'était drôle. C'était une expérimentation. Mais ne vous servez pas de ça !