J’étais d’humeur à bidouiller Google Spreadsheet et Jean-Christophe Cambadélis a fait mardi un discours au perchoir de l’Assemblée nationale. Je me suis dit que j’allais regarder s’il allait souvent en Commission des affaires étrangères, pour approfondir un peu les résultats de Regards Citoyens. Par ailleurs, Jean-Christophe Cambadélis est candidat à sa succession dans la 16ème circonscription de Paris. Il est député depuis 1988, avec une pause entre 1993 et 1997. Dans sa déclaration de candidature, il dit qu’il fut «de tous les débats». Il revient sur sa présence en commission, où il a «défendu, au fond, le rôle de la France sur des questions qui impactent notre pays et interrogent ses fondements mêmes».
Pour constater ses présences en commissions, il faut d’abord construire les url de chaque réunion. C’est assez simple, ça s’organise autour de la période (16-17 pour la présente), et d’un identifiant de réunion (des chiffres qui se suivent, de 1 à autant qu’il y a de réunions). Dans la première colonne, j’ai fait la liste des périodes, dans une autre une suite de nombres. Je rassemble tout ça pour fabriquer les url (CONCATENATE colle les textes entre eux, SPLIT les divise puis les recolle pour se débarrasser du tiret, TEXT transforme en nombre à trois chiffres les identifiants).
=CONCATENATE("http://www.assemblee-nationale.fr/14/cr-cafe/";A1;"/c";CONCATENATE(SPLIT(A1;"-"));TEXT(B1;"000");".asp")
Une fois que j’ai tous les url, je demande à Google Spreadsheet d’aller les visiter un par un. L’idée est de récupérer à la fin de la page, le nom des présents et des excusés. Pour ça, j’utilise la fonction IMPORTXML qui visite la page et la filtre ensuite en fonction des balises. Le filtrage se fait avec Xpath, un truc un peu incompréhensible, mais en gros quand je mets deux slashs, il va chercher toutes les balises dans la page et ensuite, je peux filtrer avec les crochets. Ici, je récupère tous les paragraphes contenant une balise <i> dont le texte est «Présents. -» ou «Excusés. -» (//p[i=’Présents. -‘]). Et j’utilise CONCATENATE pour être sûr que tout rentre dans une seule case.
=CONCATENATE(IMPORTXML(H2;"//p[i='Présents. -']"))
Ça me donne donc une ligne avec l’url vers le compte-rendu de réunion et des cases contenant les présents et les excusés pour cette réunion. Je fais ça en regardant si le mot Cambadélis est présent dans la case. Je l’entoure d’étoiles pour dire qu’il peut y avoir n’importe quels caractères avant ou après. J’utilise COUNTIF qui facilite cette recherche et renvoie le nombre de fois où elle a trouvé une cellule validant le résultat. Ici, ce sera soit 0 soit 1, car je teste sur une seule cellule.
=COUNTIF(D2;"*Cambadélis*")
Google Spreadsheet met beaucoup de temps à récupérer les données pour chaque page. Il faut donc limiter le nombre de requêtes, et ça peut prendre un peu de temps de chargement. Pour s’intéresser seulement aux dernières réunions, cette méthode peut convenir. Mais pour faire l’ensemble de la législature, je suis obligé de passer aux méthodes industrielles.
Je récupère l’ensemble des url de chaque réunion de la Commission des affaires étrangères, que j’avais commencé à faire dans la méthode précédente. J’utilise Outwit Hub, un outil payant, mais super efficace. Je fabrique un extracteur en reprenant nos critères précédents (un paragraphe qui commence par «Présents. -», un autre par «Excusés. -» et la date). L’extracteur est liée à un type d’url, et s’appliquera à chaque fois qu’Outwit visitera un url de ce type.
Ensuite, je créée un fichier html contenant l’ensemble des url des compte-rendus de réunion, en copiant-collant la colonne d’url dans un éditeur de texte et en les encadrant des balises idoines. Ouvert dans Outwit Hub, il suffit de faire «clic-droit > Extraction rapide > Sur les liens surlignés» pour que tous les liens soient parcourus. Et voilà !
Jean-Christophe Cambadélis s’est rendu à 25 réunions sur 398 répertoriées sur le site de l’Assemblée nationale. Depuis qu’il est Premier secrétaire, en avril 2014, il n’a assisté qu’à quatre réunions. Il déclare cependant qu’il a «redoublé d’efforts» depuis qu’il «est devenu Premier secrétaire en avril 2014» dans sa déclaration de candidature.
L’avantage d’avoir toutes les données sous la main, c’est qu’une fois qu’on a fait le travail pour Jean-Claude Cambadélis, on peut le faire également pour François Fillon, qui est également membre de la commission, et Elisabeth Guigou, qui la préside. (ça, c’est pour la comparaison).