Impossible de scraper totalement annuaire.santé

Bonjour à tous,

Je tente depuis quelques heures de scraper la liste des pros de santé situés à Dunkerque (comprenant les adresses mail) sur le site annuaire santé, mais je bloque carrément avec l’application webscraper qui ne veut pas automatiser le changement de page de résultat (un peu plus de 1000 ^^)

Quelqu’un peut-il m’aider sur le sujet (très intéressé par le process pour pouvoir apprendre) ?

Grand merci par avance.

Nb: j’ai bien remarqué sur le site annuaire santé la présence d’un gros fichier zip récapitulatif mais il ne contient pas l’adresse mail.

Antho

Effectivement, stratégie de limite d’affichage classique — utilisé ici, sur Linkedin (max. 2500 profils), sur leboncoin (max. 3500 annonces) etc.

Il faut dans ces cas là segmenter ta recherche

  • par département
  • par profession

e.g. d’abord les dentistes du 75001, puis les dentistes du 75002 etc.


Attention, du côté technique, sur https://annuaire.sante.fr/ les données sont chargées dynamiquement

Il y a 2 requêtes

updateSearchCriteria — tu mets à jour tes critères de recherche

curl 'https://annuaire.sante.fr/web/site-pro/recherche/resultats?p_p_id=rechercheportlet_INSTANCE_ctPdpHA24ctE&p_p_lifecycle=1&p_p_state=normal&p_p_mode=view&_rechercheportlet_INSTANCE_ctPdpHA24ctE_javax.portlet.action=rechercheAction&p_auth=9umZqncQ' \
  -H 'Accept: */*' \
  -H 'Accept-Language: fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7' \
  -H 'Connection: keep-alive' \
  -H 'Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryjmz8Gcga1OntmjAC' \
  -H 'Cookie: JSESSIONID=747347A854773B23C9E316C38BC3D3FE; COOKIE_SUPPORT=true; GUEST_LANGUAGE_ID=fr_FR; LFR_SESSION_STATE_20119=1696332052434' \
  -H 'Origin: https://annuaire.sante.fr' \
  -H 'Referer: https://annuaire.sante.fr/web/site-pro/recherche/resultats' \
  -H 'Sec-Fetch-Dest: empty' \
  -H 'Sec-Fetch-Mode: cors' \
  -H 'Sec-Fetch-Site: same-origin' \
  -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36' \
  -H 'X-PJAX: true' \
  -H 'X-Requested-With: XMLHttpRequest' \
  -H 'sec-ch-ua: "Google Chrome";v="117", "Not;A=Brand";v="8", "Chromium";v="117"' \
  -H 'sec-ch-ua-mobile: ?0' \
  -H 'sec-ch-ua-platform: "macOS"' \
  --data-raw $'------WebKitFormBoundaryjmz8Gcga1OntmjAC\r\nContent-Disposition: form-data; name="_rechercheportlet_INSTANCE_ctPdpHA24ctE_texttofind"\r\n\r\ndentiste\r\n------WebKitFormBoundaryjmz8Gcga1OntmjAC\r\nContent-Disposition: form-data; name="_rechercheportlet_INSTANCE_ctPdpHA24ctE_adresse"\r\n\r\n75002\r\n------WebKitFormBoundaryjmz8Gcga1OntmjAC\r\nContent-Disposition: form-data; name="_rechercheportlet_INSTANCE_ctPdpHA24ctE_cordonneesGeo"\r\n\r\n\r\n------WebKitFormBoundaryjmz8Gcga1OntmjAC\r\nContent-Disposition: form-data; name="_rechercheportlet_INSTANCE_ctPdpHA24ctE_integralite"\r\n\r\nactive_only\r\n------WebKitFormBoundaryjmz8Gcga1OntmjAC\r\nContent-Disposition: form-data; name="_rechercheportlet_INSTANCE_ctPdpHA24ctE_typeRecherche"\r\n\r\ntextLibre\r\n------WebKitFormBoundaryjmz8Gcga1OntmjAC--\r\n' \
  --compressed

Et displayResults — tu affiches tes résultats de recherche

curl 'https://annuaire.sante.fr/web/site-pro/recherche/resultats' \
  -H 'Accept: */*' \
  -H 'Accept-Language: fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7' \
  -H 'Connection: keep-alive' \
  -H 'Cookie: JSESSIONID=747347A854773B23C9E316C38BC3D3FE; COOKIE_SUPPORT=true; GUEST_LANGUAGE_ID=fr_FR; LFR_SESSION_STATE_20119=1696332052434' \
  -H 'Referer: https://annuaire.sante.fr/web/site-pro/recherche/resultats' \
  -H 'Sec-Fetch-Dest: empty' \
  -H 'Sec-Fetch-Mode: cors' \
  -H 'Sec-Fetch-Site: same-origin' \
  -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36' \
  -H 'X-PJAX: true' \
  -H 'X-Requested-With: XMLHttpRequest' \
  -H 'sec-ch-ua: "Google Chrome";v="117", "Not;A=Brand";v="8", "Chromium";v="117"' \
  -H 'sec-ch-ua-mobile: ?0' \
  -H 'sec-ch-ua-platform: "macOS"' \
  --compressed

C’est assez complexe — et sauf erreur de ma part, impossible à faire avec un click-to-scrape add-on.

Voilà ce qu’on récupère en continu sur le site:

Tu peux me contacter par MP.

NB: attention, j’ai anonymisé les données de contact pour des raisons évidentes de respect des données personnelles