Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 10/01/2012, à 12:24

nesthib

[script] un parseur pour récupérer les données servicepublic.fr

À la suite de ce post, voici un petit script qui permet d'extraire et de compiler sous forme de fichier csv les donnée du site http://lannuaire.service-public.fr concernant les mairies de France.

attention, le script est très gourmand en requêtes au niveau du serveur il ne faut donc pas en abuser, l'option -d en paramètre permet au script de n'effectuer qu'une démo en récupérant des informations partielles. Par ailleurs, bien que ces données soient publiques, il faut également préciser que toute utilisation est susceptible de faire l'objet d'une déclaration à la CNIL.

edit :voici un lien vers les données brutes et libres de droit

#!/bin/bash

OUT_FILE="info_mairies"

DEBUG_COMMAND='cat'
[ "$1" == "-d" ] && DEBUG_COMMAND='head 5'

while read departement
do
    while read ville
    do
        {
        curl -s ${ville} | sed -n -e "/<title>/s/.*Mairie \(des\? \|d \?'\? \?\|du \)\(.*\) - \(.*\) - \(.*\) -\([0-9]\+\).*/\3, \4 (\5), \2, /Ip" \
                                  -e '/Adresse/{n;s/^ *<p>//;s/<br \/>/ - /gp}' \
                                  -e '/Téléphone/{n;s/.*\(+[ 0-9]\+\).*/, \1, /p}' \
                                  -e '/Courriel :/{n;s/.*>\([^<]*\)<.*/\1/;s/ \[ à \] /@/p}' | tr -d '\n'
        echo ", ${ville}"
        } | tee -a "${OUT_FILE}"
    done < <(curl -s ${departement} | sed -n 's#.*\(mairies/.*.html\).*#http://lannuaire.service-public.fr/\1#p' | ${DEBUG_COMMAND})
done < <(curl -s http://lannuaire.service-public.fr/navigation/index-mairie.html | sed -n '/contenuCarte/,/contenuForm/s#.*href="\([^"]*\).*#http://lannuaire.service-public.fr/navigation/\1#p' | ${DEBUG_COMMAND})

edit : typo + lien vers les données brutes

Dernière modification par nesthib (Le 10/01/2012, à 16:35)


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#2 Le 10/01/2012, à 12:56

pem1664

Re : [script] un parseur pour récupérer les données servicepublic.fr

Top, bravo pour le script et tes mises en gardes  smile

EDIT : une question cependant, pourquoi as tu remplacé le courriel par l'adresse du lien pour la mairie en question?
Oups roll pardon! en regardant mieux le fichier de sortie il y a

+33 2 72 77 20 00, , http://lannuaire.service-public.fr/mairies/pays-de-la-loire/maine-et-loire/mairie-49099-01.html

(par exemple) ce qui me laisse penser que le sed ne trouve pas l'adresse mail

EDIT2: il manque un $ devant {DEBUG_COMMAND} à la dernière ligne roll

Dernière modification par pem1664 (Le 10/01/2012, à 14:48)


Pas de problème sans solutions, mettre [résolu] dans son premier post permet de rechercher plus facilement une solution... ;)

Hors ligne

#3 Le 10/01/2012, à 14:38

xabilon

Re : [script] un parseur pour récupérer les données servicepublic.fr

Salut

Je signale que toutes les données de l'annuaire administratif de service-public.fr (mairies, services publics divers nationaux et européens) sont disponibles en téléchargement ici, sous forme de fichiers XML, et sous licence ouverte.


Pour passer un sujet en résolu : modifiez le premier message et ajoutez [Résolu] au titre.

Hors ligne

#4 Le 10/01/2012, à 14:52

pem1664

Re : [script] un parseur pour récupérer les données servicepublic.fr

Merci Xabilon pour l'info! roll je vous jure que je l'ai cherché cette info!! (mal faut croire)
EDIT: en meme temps y'en a pour 100Mo a dl, alors qu'avec le script de nesthib, apres suppression des [ à ] <dd> et </dd> l'ensemble des adresses prend 397ko pour 31280 adresses!

Dernière modification par pem1664 (Le 10/01/2012, à 15:10)


Pas de problème sans solutions, mettre [résolu] dans son premier post permet de rechercher plus facilement une solution... ;)

Hors ligne

#5 Le 10/01/2012, à 16:21

xabilon

Re : [script] un parseur pour récupérer les données servicepublic.fr

Oui, l'archive décompressé fait dans les 250Mo, dont 120Mo pour les mairies.
Pour épargner les serveurs, ce serait peut-être mieux de travailler directement sur le fichier téléchargé pour en sortir un csv


Pour passer un sujet en résolu : modifiez le premier message et ajoutez [Résolu] au titre.

Hors ligne

#6 Le 10/01/2012, à 16:37

nesthib

Re : [script] un parseur pour récupérer les données servicepublic.fr

tout à fait d'accord, en plus les données sont triées, en xml et plus complètes, cependant le script reste intéressant à étudier donc je le laisse à disposition.


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#7 Le 10/01/2012, à 17:02

pem1664

Re : [script] un parseur pour récupérer les données servicepublic.fr

Merci a vous 2, pour le script comme pour les info!
@ Nesthib : ca résout notre problème en mp smile


Pas de problème sans solutions, mettre [résolu] dans son premier post permet de rechercher plus facilement une solution... ;)

Hors ligne

#8 Le 10/01/2012, à 19:34

Kanor

Re : [script] un parseur pour récupérer les données servicepublic.fr

Après le site opendata de l'état français est tout récent.

Hors ligne