Scraping Open Street Map

Hello @investigathor

La collecte de données se passe en 3 étapes.

:round_pushpin: récupérer la liste des codes postaux de France et leurs points de latitude/longitude.
Elle est accessible ici, en open source

:office: récupérer les mairies en faisant une requête POST vers le site, pour chaque point de latitude/longitude

Voilà le cURL:

curl 'https://passeport.ants.gouv.fr/geoloc' \
  -H 'authority: passeport.ants.gouv.fr' \
  -H 'accept: application/json, text/plain, */*' \
  -H 'accept-language: fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7' \
  -H 'content-type: application/json' \
  -H 'origin: https://passeport.ants.gouv.fr' \
  -H 'sec-ch-ua: "Chromium";v="116", "Not)A;Brand";v="24", "Google Chrome";v="116"' \
  -H 'sec-ch-ua-mobile: ?0' \
  -H 'sec-ch-ua-platform: "macOS"' \
  -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/116.0.0.0 Safari/537.36' \
  --data-raw '{"lat":43.2803,"long":5.3806,"source":"mairie","distance":"50km","from":0,"size":100}' \
  --compressed

Dans le paramètre data-raw tu vois effectivement deux éléments:

  • lat
  • lng

Ce sont ces éléments là qu’il faut remplir avec les données récupérées en open source.

Après chaque requête, tu obtient une donnée au format JSON, qui à cette tête là:

{
   "_index":"6e85fcdd-818a-4bfd-ab63-d925b2fcc4d5",
   "_type":"_doc",
   "_id":"f14f836c-5b1e-4066-8a56-545f887abb6f",
   "_score":null,
   "_source":{
      "id":"f14f836c-5b1e-4066-8a56-545f887abb6f",
      "created":"2023-05-24T21:21:19.594Z",
      "updated":"2023-05-24T21:21:19.594Z",
      "type":"mairie",
      "customId":"UGF13082",
      "location":"43.2763670,5.3899340",
      "others":{
         "customId":"UGF13082",
         "isActive":"actif",
         "name":"Mairie de Marseille 8e - Prado",
         "address":"1 boulevard de Louvain",
         "address2":"",
         "postalCode":"13008",
         "city":"Marseille",
         "longitude":"5.389934",
         "latitude":"43.276367",
         "phone":"08 10 81 38 13",
         "email":"",
         "webSite":"http://www.mairie-marseille.fr",
         "openingTimeMonday":"8h30 - 11h45\n12h45 - 16h30",
         "openingTimeTuesday":"8h30 - 11h45\n12h45 - 16h30",
         "openingTimeWednesday":"8h30 - 11h45\n12h45 - 16h30",
         "openingTimeThursday":"8h30 - 11h45\n12h45 - 16h30",
         "openingTimeFriday":"8h30 - 11h45\n12h45 - 16h30",
         "openingTimeSaturday":"",
         "openingTimeSunday":""
      }
   },
   "sort":[
      0.8730516108242243
   ]
}

:file_folder: stocker cette information dans un fichier csv

Et voilà!

Je ne suis pas du tout initié au codage pour automatiser tout ça, comment puis-je faire ?

Alors franchement, c’est pas simple à faire si tu ne sais pas coder :full_moon_with_face:
Mais n’hésite pas à me contacter en MP, je te ferai une jolie proposition!