Created
June 12, 2017 11:59
-
-
Save Magicking/7fad6c850c2132d246140d05a27fdebd to your computer and use it in GitHub Desktop.
Liste des candidats ayant eu 0 voix
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Dep Alpes-Maritimes (006 - 3) - ASIN Didier | |
Dep Ardèche (007 - 2) - VALLON Jean-Paul Louis | |
Dep Aude (011 - 2) - DEBONO Aurore | |
Dep Bouches-du-Rhône (013 - 1) - RADY Souaad | |
Dep Bouches-du-Rhône (013 - 1) - ABDALLAH Fouad | |
Dep Bouches-du-Rhône (013 - 2) - PERETTI Sébastien | |
Dep Bouches-du-Rhône (013 - 3) - MASSE Christophe | |
Dep Bouches-du-Rhône (013 - 4) - BOUDOUAYA Selma | |
Dep Bouches-du-Rhône (013 - 5) - ZIEBA Pierre-Frédéric | |
Dep Bouches-du-Rhône (013 - 6) - LABIBES Abdel | |
Dep Bouches-du-Rhône (013 - 10) - MINARI Nathalie | |
Dep Corse-du-Sud (02A - 1) - COMITI Jean-Jacques | |
Dep Côte-d'Or (021 - 3) - MAITROT Lucas | |
Dep Creuse (023 - 1) - MOUNIER Michèle | |
Dep Dordogne (024 - 4) - GORISSE Edwige | |
Dep Drôme (026 - 4) - MANA Nadia | |
Dep Eure-et-Loir (028 - 1) - CAILLOL Valérie | |
Dep Gard (030 - 2) - BROADBENT Timothy | |
Dep Gard (030 - 5) - CHEVALIER Patrick | |
Dep Ille-et-Vilaine (035 - 2) - HARDY Guillaume | |
Dep Ille-et-Vilaine (035 - 6) - VEDRENNE Marie-Pierre | |
Dep Indre-et-Loire (037 - 4) - POLIER Pierre | |
Dep Indre-et-Loire (037 - 5) - VALLÉE Patrice | |
Dep Isère (038 - 4) - AUGIER Bernard | |
Dep Isère (038 - 10) - BOURICHA Nourredine | |
Dep Jura (039 - 1) - LAPIERRE Michel | |
Dep Loire (042 - 1) - PLACE Bénédicte | |
Dep Loire (042 - 4) - THOMAS Pascal | |
Dep Loire (042 - 4) - SHEMATSI François | |
Dep Haute-Loire (043 - 1) - DENIS Hélène | |
Dep Loire-Atlantique (044 - 2) - DUMONTET-TARRIUS Béatrice | |
Dep Loire-Atlantique (044 - 8) - TARRIUS Catherine | |
Dep Loiret (045 - 1) - BONFORT Claire | |
Dep Loiret (045 - 2) - VALIX Maurice | |
Dep Loiret (045 - 5) - MOURY Nathalie | |
Dep Loiret (045 - 5) - BRUNETTE Denis | |
Dep Loiret (045 - 5) - DAIRE Cécile | |
Dep Marne (051 - 1) - MAYA-PÉREZ Julien | |
Dep Mayenne (053 - 3) - BRESARD Bernadette | |
Dep Meurthe-et-Moselle (054 - 2) - GNIADEK Julien | |
Dep Moselle (057 - 4) - GERDIL Lise | |
Dep Moselle (057 - 6) - HALLIER Marjolaine | |
Dep Moselle (057 - 8) - KIFFER Camille | |
Dep Moselle (057 - 9) - SANDER Yan | |
Dep Nord (059 - 1) - RODRIGUEZ Pierre | |
Dep Nord (059 - 1) - RAMBERT Valentine | |
Dep Nord (059 - 1) - ÉTIENNE Stéphane | |
Dep Nord (059 - 1) - DE CESARE Virginie | |
Dep Nord (059 - 8) - DA COSTA Luis | |
Dep Puy-de-Dôme (063 - 1) - POURCHON Alexandre | |
Dep Hautes-Pyrénées (065 - 1) - GIRON Thierry | |
Dep Haut-Rhin (068 - 2) - MOERMAN Dylan | |
Dep Rhône (069 - 2) - KROUBI Kamel | |
Dep Rhône (069 - 3) - NICOLAÏ Lérie | |
Dep Rhône (069 - 7) - BERGE Constance | |
Dep Rhône (069 - 13) - BLÉHAUT Athénaïs | |
Dep Rhône (069 - 14) - BEN KHELIFA Lotfi | |
Dep Savoie (073 - 3) - PONS Henriette | |
Dep Paris (075 - 2) - PUYOOU Annick | |
Dep Paris (075 - 2) - DE PREVAL David | |
Dep Paris (075 - 5) - HAYEK Alexandre | |
Dep Paris (075 - 6) - AGON Christian | |
Dep Paris (075 - 14) - HARCHAOUI Sarah | |
Dep Paris (075 - 14) - STEPHANT Kenza | |
Dep Paris (075 - 15) - CASTILLON Florence | |
Dep Paris (075 - 16) - DESCOUTURES Anne | |
Dep Paris (075 - 16) - DEBANNE Emmanuel | |
Dep Paris (075 - 18) - ARENAS Carla | |
Dep Seine-Maritime (076 - 1) - GIRARD Mathias | |
Dep Seine-Maritime (076 - 3) - HUET DE BARROS Nicolas | |
Dep Seine-Maritime (076 - 4) - DEDJI Noël | |
Dep Seine-et-Marne (077 - 8) - ROMET Frédéric | |
Dep Yvelines (078 - 5) - CASTILLON Adeline | |
Dep Tarn (081 - 2) - LENIE Marina | |
Dep Var (083 - 1) - DRIQUEZ Viviane | |
Dep Var (083 - 4) - CAMOUS Martine | |
Dep Vaucluse (084 - 3) - MAIRE Philippe | |
Dep Vendée (085 - 1) - NORYNBERG Didier | |
Dep Territoire de Belfort (090 - 1) - LAGACHE Romain | |
Dep Essonne (091 - 1) - SABATTIER Jacqueline | |
Dep Essonne (091 - 4) - RAVILLARD Coraline | |
Dep Essonne (091 - 9) - PENDANT David | |
Dep Seine-Saint-Denis (093 - 2) - NINI Nadir | |
Dep Seine-Saint-Denis (093 - 2) - SCEKIC Vesna | |
Dep Seine-Saint-Denis (093 - 2) - HOCINI Abdel | |
Dep Val-de-Marne (094 - 4) - BRAS Hélène | |
Dep Val-de-Marne (094 - 7) - OLLIÉ Anaïs | |
Dep Val-de-Marne (094 - 8) - LEISEING Patrick | |
Dep Val-de-Marne (094 - 9) - BELARBI Drifa | |
Dep Val-de-Marne (094 - 10) - MAKANGILA-LEBO Clémentine | |
Dep Val-d'Oise (095 - 1) - BRUYELLE Rudy | |
Dep Val-d'Oise (095 - 1) - VUILLEMIN Anne-Sophie | |
Dep Guadeloupe (971 - 3) - MADACHON Eric | |
Dep Guadeloupe (971 - 4) - NWETPOUNGAM Valerie | |
Dep Français établis hors de France (099 - 1) - TOPLA Balie | |
Dep Français établis hors de France (099 - 2) - SIMONNET Odette | |
Dep Français établis hors de France (099 - 2) - MILLET Mickaël | |
Dep Français établis hors de France (099 - 2) - LAHANA Stéphanie | |
Dep Français établis hors de France (099 - 5) - TEYSSOU Chloé | |
Dep Français établis hors de France (099 - 9) - MASSIANI Yves-Eric |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Bibliothèque permettant la manipulation d'XML *facilement* | |
# http://lxml.de/xpathxslt.html#the-xpath-method | |
from lxml import etree | |
# Bibliothèque pour des requetes HTTP facile | |
# http://docs.python-requests.org/en/master/) | |
import requests | |
# Bibliothèque pour le chargement / déchargement d'objet | |
# https://wiki.python.org/moin/UsingPickle | |
import pickle | |
# Accès à l'environnement système (paramètre de la ligne de commande) | |
# https://docs.python.org/3/library/sys.html#sys.argv | |
import sys | |
# Python package requis: | |
# - requests | |
# - lxml | |
# Très peu optimisé, ce script prend beaucoup de mémoire (~2.5Go) | |
# Point d'entrée de la hiérarchie des documents XML | |
entry_url = 'http://elections.interieur.gouv.fr/telechargements/LG2017/resultatsT1/' | |
# On s'occupe de récupérer les départements | |
def getDpts(): | |
# On récupère la liste des départements | |
page = requests.get(entry_url + 'index.xml') | |
# On convertie le texte reçu en une structure XML | |
tree = etree.fromstring(page.content) | |
# On récupère les attributes Code de Département sur 3 | |
# Caractères (CodDpt3Car) et le libéllé du Département (LibDpt) | |
# On utilise une requête XPath (voir lien lxml ci-dessus) qui | |
# s'occupe de cherche dans l'arbre XML ces éléments | |
listDpts_num = tree.xpath('//Election/Departements/Departement/CodDpt3Car/text()') | |
listDpts_name = tree.xpath('//Election/Departements/Departement/LibDpt/text()') | |
# On lie les deux éléments au moyen d'une "fermeture éclair" (zipper) | |
listDpts = zip(listDpts_num, listDpts_name) | |
Dpt = [] | |
# Pour chaque département(numéro et nom) | |
for num, name in listDpts: | |
# On récupère les candidats | |
circonscription = 1 | |
while True: | |
# Pour chaque circonscription sur 2 chiffres | |
cs, ok = getCandidats(num, '%02d' % circonscription) | |
if not ok: | |
break | |
# On ajouter un dictionnaire de candidats par circonscription | |
Dpt.append({'name': name, 'num': num, 'cir': circonscription, 'candidats': list(cs)}) | |
circonscription += 1 | |
# On retourne la liste des départements | |
return Dpt | |
def getCandidats(num, cirnum): | |
# On choisi les données que l'on souhaite voir | |
# NumPanneauCand: Numéro de panneau du candidat | |
# NomPsn: Nom du candidat | |
# PrenomPsn: Prénom du candidat | |
# CivilitePsn: Civilité du candidat (M Mme) | |
# CodNua: Code nuance du candidat | |
# LibNua: Libellé de la nuance du candidat | |
# Source: Page 12, http://www.tarn.gouv.fr/IMG/pdf/elections_legislatives_2017_-_guide_pour_le_telechargement_des_resultats_xml.pdf | |
# Ici: NomPsn, PrenomPsn, NbVoix | |
candidats_chars = ['NomPsn', 'PrenomPsn', 'NbVoix'] # (Nom - 0, Prenom - 1, NbVoix* - 2) | |
# On récupère les résultats de toutes les circonscriptions du département | |
page = requests.get(entry_url + num + '/' + num + cirnum + '.xml') | |
if page.status_code != 200: | |
return None, False | |
# On convertit le texte reçu en une structure XML | |
tree = etree.fromstring(page.content) | |
cs = {} | |
# Pour toutes les données | |
for char in candidats_chars: | |
# On effectue une requête XPath pour chaque attribut du candidat | |
cs[char] = tree.xpath('//Election/Departement/Circonscription/Tours/Tour/Resultats/Candidats/Candidat/%s/text()' % char) | |
# On noue et retourne ensemble chaque triplet d'information d'un candidat | |
return zip(cs['NomPsn'], cs['PrenomPsn'], cs['NbVoix']), True | |
if __name__ == '__main__': | |
if len(sys.argv) == 2 and sys.argv[1] == 'load': | |
# En cas de passage de "load" comme argument, il essayera de charger les | |
# résultats depuis un fichier local | |
dpt = pickle.load(open('legislatives-2017.p', 'rb')) | |
else: | |
# Sinon, il en créera un | |
dpt = getDpts() | |
pickle.dump(dpt, open('legislatives-2017.p', 'wb')) | |
# Pour tout les départements | |
for d in dpt: | |
# Pour tout les candidats | |
for c in d['candidats']: | |
# Si le NbVoix* est à '0' | |
if c[2] == '0': | |
# Affiche le département, son numéro et sa circonscription ainsi que le nom et prénom du candidat | |
print('Dep %s (%s - %s) - %s %s' % (d['name'], d['num'], d['cir'], c[0], c[1])) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment