Extraire une liste d’une page Wikipédia. Exemple des stations de radio locales

Dans le cadre du projet RELOC, Réseaux sociaux et localisation du financement participatif (financement DEPS/Ministère de la Culture et de la Communication), la recherche des équipements culturels sur un territoire m’a amenée à récupérer différentes bases de données et des informations sur l’encyclopédie collaborative Wikipédia.

Extraire la liste des radios françaises de Wikipédia dans un tableur

Notre objectif est d’obtenir le nombre de radios par ville en France.

Il existe différentes manières de le faire d’après de nombreux blogs sur le web, avec google spreadsheet ou le projet BDpediaFR.

J’ai essayé à partir d’un article très bien fait sur data.hypotheses.org, celui d’Alexandre Hobeika et Étienne Ollion mais leur billet se base sur une extraction à partir d’un tableau, ce qui n’est pas le cas ici.

On va donc détailler l’intérêt de maîtriser quelques commandes basiques héritées du monde Unix pour traiter des fichiers textes. Ces commandes sont valides pour un environnement GNU/Linux (type Debian Jessie). Pour MacOS, elles peuvent légèrement varier dans leur forme ou leurs options.

Extraire le code source HTML

Enregistrer le contenu du code source html (de la page Wikipédia archivée et non modifiée par le navigateur) dans un fichier encodé en UTF-8 nommé par exemple sources dans votre répertoire personnel. Ici les extensions de fichier sont optionnelles.

On notera que le fichier obtenu est très bien formaté puisque chaque station est sur une ligne distincte. Cela va nous permettre de sauter une étape de sélection des données par xpath et de nous concentrer sur l’utilisation de méthodes de sélection et d’édition de flux qui travaillent ligne par ligne.

sources vu dans atom

sources vu dans Atom

Vous allez devoir taper des commandes dans votre Terminal. Par exemple pour accéder à votre fichier vous devez taper la commande suivante (lien si vous êtes déjà perdu) :

  • pwd : où je suis
  • ls: liste
  • cd: change directory, exemple: cd/home/personel/…

Pour cette extraction, voici les principales commandes à connaître:

  • man <command> : affiche l’aide sur une commande, alternative à Google
  • grep <pattern> [<file>] : sélectionne les lignes correspondant à un motif
  • sed <command>: c’est très réducteur, mais dans notre cas, on va dire que cette commande sert à transformer les lignes
  • le symbole pipe | sert à rediriger la sortie de la commande à gauche en tant qu’entrée de la commande de droite. Bonne chance pour le trouver sur un clavier Mac. Bon allez on est sympa on vous donne la combinaison : ALT+SHIFT+L (et après on nous répète à l’envie qu MacOS est ergonomique…)
  • while et for sont des instructions de boucle commune à beaucoup de langages de programmation impératifs (tant que vrai faire …., pour chaque élément dans … faire … )

Un bonne connaissance des expressions régulières/rationnelles est un gros plus. Si vous aimez les maths, la théorie des langages et des automates, tant mieux, sinon, une référence sur le sujet : www.rexegg.com.

Restreindre les lignes correspondantes aux stations et villes

Les lignes qui nous intéressent sont les lignes qui commencent par <li> et, de manière étonnante, elles ont toutes au moins un groupe entre parenthèses. On veut également conserver les titres intermédiaires correspondants aux départements.
On ne prend que ces lignes (commande grep) et on ne conserve que ce qui se trouve entre la première parenthèse ouvrante et la dernière parenthèse fermante de la ligne (commande sed). Le fichier créé sera nommé frequences.
# Cette commande se présente sur deux lignes grâce au back slash \ pour
# être un peu plus lisible. Elle se lit de cette manière:
# Pour chaque ligne dans le fichier sources correspondant au motif
#   0 ou plusieurs blancs (espace, tabulation) suivis de <li> suivi d'au
#   moins un caractère suivi d'au moins un caractère entre parenthèses;
# transformer cette ligne pour ne conserver que le groupe entre ( )
# et envoie tous les résultats dans un nouveau fichier nommé frequences
grep -E '^\s*(<li>.+\(.+\)|<h3><span class="mw-headline")' sources \
  | sed -E 's@[^(]+(\(.+\))[^)]+@\1@' > frequences
frequences vu dans atom

frequences vu dans Atom

On retire tous les liens sur les villes pour ne garder que les noms de communes, cela évite d’avoir des noms avec du Percent Encoding.

# Le sed transforme les lignes du fichier frequences pour retirer les
# éléments html des liens et ne conserver que le texte de la balise a
sed -i -E 's@<a href[^>]+>([^<]+)</a>@\1@g' frequences

# sous mac os, ne pas mettre -i 
# et diriger vers un nouveau fichier en ajoutant > frequences2
sed -E 's@<a href[^>]+>([^<]+)</a>@\1@g' frequences > frequences2

Extraire les noms de communes

Pour chaque ligne du fichier villes que l’on va créer, on ne garde que le contenu du dernier groupe entre parenthèses. Il faut également supprimer les lignes correspondantes aux radios émettant dans une langue régionale situées en fin de fichier. Ces stations sont déjà répertoriées dans la liste par département.

# Transforme les lignes du fichier frequences pour ne conserver que le
# dernier groupe entre ( ).
# Le résultat de cette commande est envoyé dans fichier villes
sed -E 's@^.+\(([^\)]+)\)$@\1@g' frequences > villes

Malheureusement, certaines lignes avaient un commentaire en fin de ligne entre parenthèses et non pas les noms de communes. Pour ces rares exceptions (une quinzaine), une correction manuelle s’impose. Savoir utiliser un comparateur de texte aide énormément pour cela, comme par exemple vimdiff ou kdiff3.

vimdiff frequences villes
# Pour chaque ligne où le dernier groupe n'était pas la/les commune/s
# 1. restaurer la ligne initiale avec 'dp'
# 2. corriger manuellement (CTRL-W →, mode insertion et corriger)
# 3. enregistrer les modifications (:w, CTRL-W ←, :diffupdate)

OU, Perso, sous mac, j’ai installé Diffmerge, et une ligne exceptée, ça fonctionne en mode graphique.

Cas particuliers: plusieurs villes sur la même ligne

Certaines lignes ont plusieurs villes séparées par des virgules. Là c’est plus délicat, on va lire le fichier ligne par ligne, découper chaque ligne sur le caractère virgule et pour chaque champ le réécrire dans un nouveau fichier:

# La variable IFS indique à la commande for quel est le caractère qui
# sépare les éléments, on va y placer le symbole virgule.
# Le && permet de chainer la deuxième commande si la première a réussi.
IFS="," && while read line; do for city in $(echo "$line"); do \
  printf "%s\n" "$city" >> villes_split; done; done < villes

Il reste le cas des relocalisations, Ville A puis Ville B, où on ne souhaite conserver que la dernière ville, là où est actuellement située la radio.

# Transforme les lignes du fichier villes_split correspondantes au motif
#   N'importe quoi suivi de puis d'un espace et du reste de la ligne,
#   capturé sous forme d'un groupe
# pour ne conserver que le premier groupe capturé
sed -i -E 's@^.+puis (.+)$@\1@g' villes_split

# rappel, sous mac, pas de -i et ajouter > villes_split2

Nettoyer le fichier

À ce stade le fichier villes ne contient plus qu’une commune par ligne, certaines entre parenthèses, d’autre non. On nettoie les parenthèses inutiles

# Transforme les lignes du fichier villes_split correspondantes au motif
#   Une parenthèse ouvrante suivi de blancs optionnels puis de caractères
#   qu'on capture tant qu'on ne trouve pas de parenthèse fermante
# pour ne conserver que le premier groupe capturé
sed -E 's@\(*\s*([^\)]+)\)*@\1@g' villes_split > villes_clean

# sous mac, il faut matcher la ligne complète pour pouvoir en extraire
# une partie
sed -E 's@ *\(*\s*([^\)]+)\)* *@\1@g' villes_split2 > villes_clean

Regrouper par commune

Certaines communes ayant des homonymes dans d’autres départements, on va adjoindre à chaque ville le numéro de département de sa rubrique.

while read line; do is_dpt=$(echo "$line" | grep -cE '^[0-9][0-9AB]$'); \
  if [[ $is_dpt -gt 0 ]]; then dpt="$line"; \
  else echo "$line $dpt" >> villes_dpt; fi; done < villes_clean

Maintenant pour traiter plus rapidement le fichier, on va le trier

sort villes_dpt > villes_sort

La commande uniq avec le flag -c permet de compter les doublons et peut servir à faire l’équivalent d’un SELECT count(1), ville GROUP BY ville en SQL dans ce cas précis.

uniq -c villes_sort > villes_final

Et on obtient un fichier avec <nombre de stations><espaces><ville>.

Remarque:

Une petite vérification manuelle du fichier obtenu laisse apparaître quelques erreurs qu’on corrige en se référant à la page Wikipedia.

Parmi les possibles erreurs on notera:

– L’énumérations de plusieurs villes pour une station, dont l’une des villes ne se trouve pas dans le même département: Grenoble, Annecy etc… On corrige le code département

– La duplication d’information (une même station notée deux fois sur la même ville mais dans deux départements différents, aire d’écoute?): Armentières, Lannion, Perros-Guirec, Embrun, Les Mureaux etc… On supprime le doublon

– Des stations ayant déménagées ou des stations non locales n’ayant pas de ville bien définie: Saône-et-Loire, Normandie, etc… On supprime la ligne

On effectue les corrections sur le fichier villes_sort et on relance la dernière commande.

On fera attention à ne pas créer de nouvelles erreurs, par exemple il existe bien deux Valence en France avec des radios locales, dans la Drôme (26) et dans le Tarn-et-Garonne (82).

nombre de radio / ville_dept

nombre de radio / ville_dept

Simple à importer dans n’importe quel logiciel de traitement de données ou dans ma petite base en cours sur les équipements culturels 😉

Bon test!

Cette extraction a été faite le 5 mai 2016 avec l’aide de Pierre Barnoux, informaticien.

Note de lecture, Traces et territoires numériques, M. Severo et A. Romele, 2015

SEVERO M., ROMELE A. (2015), Traces numériques et territoires, Paris : Presses des mines, 268 p.

ISBN : 978-2-35671-206-6. En ligne : iet.hypotheses.org/55

Note de lecture

Le développement tant des outils numériques que des usages quotidiens par les habitants, les élus, les chercheurs amènent à étudier les territoires à partir de nouveaux attributs. Dans l’ouvrage dirigé par Marta Severo et Alberto Romele, cette étude des territoires prend pour objet de recherche les médias numériques qui produisent des traces qu’il est possible d’extraire, d’enregistrer, d’analyser et de visualiser. Cet ouvrage offre une diversité d’approches théoriques et méthodologiques sur ce sujet. Les 15 auteurs s’inscrivent dans différentes disciplines scientifiques : la géographie ; la sociologie ; la philosophie ; l’urbanisme ; l’information ; la communication ou sa variante numérique « les nouveaux médias ». Au fil des onze chapitres, des approches empiriques et théoriques complémentaires sur le traitement des traces numériques ouvrent la voie à de nouvelles études des territoires. Mais la question de la qualification de ce terme territoire reste ouverte, les auteurs étudient-ils un territoire « physique » et/ou « numérique » ?

source: Presses des Mines

source: Presses des Mines

Le premier chapitre, comme les trois suivants, composent une première partie dédiée à la restitution de travaux empiriques. Richard Rogers introduit dans le premier chapitre les big data dans la recherche sociale et politique. L’auteur souligne le risque d’observer plus le fonctionnement des réseaux sociaux numériques qu’une quelconque tendance sociétale. De plus, l’automatisation de la collecte néglige dans de trop nombreuses études l’éthique sur l’utilisation de ces données à caractère personnel tandis que le traitement par agrégation ou par localisation des données pour présenter des résultats peuvent conduire à une « cécité computationnelle », celle de leurs conditions de production au nom de la perspicacité. Les études numériques mettent en place alors de nouvelles métriques pour analyser le territoire basées sur l’activité des internautes dans un environnement propre qui est celui du web. Les trois tendances méthodologiques sont :

  • l’analytique culturelle (métrique des images, des selfies sous forme de grille) ;
  • la culturnomique (métrique linguistique visualisé sous forme de graphiques)
  • et, la cybermétrie (métrique des citations entre sites web visualisées sous forme de graphes).

Mais qui du chercheur ou de la plateforme, telle que Facebook, influence le choix de la méthode, s’interrogent Noortje Marres et Carolin Gerlitz dans le deuxième chapitre. Face à ce « troublant mystère méthodologique », les auteurs développent la notion prolifique de méthodes d’interfaces. Ces méthodes émergentes demeurent proches des intérêts et des démarches scientifiques et reposent dans le même temps, et indubitablement, sur les outils créés par les plateformes web pour le grand public. Ces instruments variés, des chercheurs et des industriels, entrent alors en résonance selon les auteurs.

Des méthodes, le troisième chapitre glisse vers le statut de ces données et la perplexité du chercheur face à ces données qui débordent des catégories déjà existantes et mobilisées dans le cadre des analyses des territoires. Nous dirons donc que les catégories se délitent dans cette analyse des territoires et du web. Après une définition des termes ou expressions data, big data, open data, c’est le terme soft data qui est retenu par Marta Severo et Alberto Romele. Ce terme soft data permet de les distinguer des hard data, ces données institutionnelles qui ne procurent pas de satisfaction aux décideurs publics. Pour ces auteurs, les soft data permettent surtout, dans une perspective immanente, de capter « l’instantanéité » de la vie des territoires. Les chercheurs souhaitent ici se trouver au plus près du temps du territoire, celui qui est vécu par les individus que les traces reflètent. Il est à noter qu’il n’est pas envisagé dans ce texte de croiser ces données institutionnelles avec des données issues d’acteurs économiques du web, méthode qui pourrait permettre de comprendre en quoi un territoire dans sa définition institutionnelle ne se duplique à l’identique sur les plateformes web ou les outils numériques. Dans le quatrième chapitre, Jos de Mul décrit l’identité de ces individus devenue une base de données. L’identité mise en données s’éloigne alors de la question du récit.

Le cinquième chapitre ouvre une deuxième partie constituée de quatre chapitres où des approches théoriques sont développées. Dominique Boullier décrit l’écume numérique des territoires, ou plus précisément ce que produisent les traces numériques. L’auteur détaille huit propriétés des territoires et trois agencements qui définissent chacun une architecture technique et de données d’une époque précise. Le fil conducteur de ce chapitre est la transposition de chacun de ces agencements. L’agencement topographique formé autour des notions de pouvoir et de frontières est transposé dans un agencement topologique reposant sur la distribution et l’accès qui est lui-même transposé dans un « territoire » à agencement chronologique. Ces trois agencements sont résumés p. 131 dans un tableau qui compare, par exemple, la centralité issue du premier agencement topographique avec la distribution du deuxième agencement topologique et les rumeurs, les issues qui se déploient sur le mode de la vibration dans ce dernier agencement défini comme chronologique. L’espace laisse place ici à l’analyse des temps des territoires de plus en plus volatiles, éphémères et l’auteur propose alors une analyse des écumes (concept repris à P. Sloterdijk) urbaines et territoriales.

Le sixième chapitre questionne les spatialités algorithmiques ou les attachements « éminemment » spatiaux des traces numériques. Boris Beaude développe deux concepts l’hypercentralité et la synchronisation. Pour l’auteur, les pratiques des individus se réalisent dans un nombre limité d’espaces et dans un temps qui se réagencent dans ce qui pourrait être nommé une « topochronie ». Le panorama des questions soulevées par l’auteur est important, dense et complexe à restituer :

  • la visualisation des données et la connaissance d’un environnement ;
  • l’exploration des traces et la révélation de leur potentiel ;
  • la recherche des traces par localisation ;
  • les perspectives des traces pour un territoire événement.

L’ensemble de ces représentations de l’espace comme la localisation des images de plateformes (Twitter, Panoramio, Facebook ou Tripadvisor) réduit alors le monde à l’individu, à la surveillance de ses traces et moins au sens produit par ses traces. Ce type de recherches reste très peu développé selon l’auteur.

Un travail de recherche en cours sur la localisation des traces sur ces plateformes de réseaux web nous laisse perplexe quant aux méthodes à développer pour analyser ce que nous nommons l’attachement territorial des traces, tant dans leur dimension spatiale que temporelle, ce que ces chapitres méthodologiques et théoriques montrent aisément.

C’est de la trace comme donnée dont il est question dans le septième chapitre, centré autour du concept d’hyperville développé en 10 tableaux par Franck Cormerais. L’hyperville se distingue des concepts de smartcity, de ville intelligente et de la gouvernance algorithmique. Il a pour but de définir un système contributif local, reposant sur des pratiques numériques de contributeurs qui participent aux communs, à la valorisation du territoire. Ce système contributif local repose sur un système local de données qui participent elles-mêmes à un « espace public digital ». Ces données sont produites par des fans. Reprenant la pharmacologie de B. Stiegler, l’auteur interroge alors son modèle de l’hyperville. Il conclue que les données et les pratiques numériques des contributeurs développent la base informationnelle individualisée de l’hyperville qui alimente ainsi le système contributif local.

Le huitième chapitre prolonge la réflexion théorique ouverte par les trois chapitres précédents, en interrogeant le « désir de data ». Les deux auteurs Maryse Carmes et Jean-Max Noyer sont les deux directeurs de la collection « territoires numériques » aux Presses des Mines, dans laquelle est éditée cet ouvrage. Pour ces deux auteurs, les données pour qu’elles sortent de leur pauvreté sémiotique des statistiques, des algorithmes et des graphes doivent rentrer dans le désirable par le biais de la narration mêlant open-data et marketing. Ces données sont donc localisées, territorialisées, re-territorialisées peut-être pour appuyer une institutionnalisation tout autant qu’un marketing territorial. S’éloignant du territoire ou des traces spatiales, les auteurs critiquent l’utilisation de ces données personnelles, de l’ontologie du client, des cartographies valuées par ce « tiers de confiance » qu’est le marketing ainsi que la performativité de son discours. La communauté au sens politique perd de sa substance pour aller vers des horizons post ou trans-humanistes définis à travers un semble de textes que les auteurs commentent au cours de la dernière partie de leur chapitre.

Le neuvième chapitre, quant à lui, entraîne le lecteur vers des exemples appuyés par des terrains d’analyse qui vont conduire toute cette dernière partie qui portera plus spécifiquement sur les pratiques professionnelles. Mathieu Noucher revient sur le savoir cartographique et les nouveaux acteurs de l’information géographique comme OpenstreetMap et Google Map. Si précédemment l’intentionnalité géographique pouvait se résumer aisément en une carte qui était contrôlée de la collecte de données à la localisation des données sur un fond de carte par un État pour asseoir son pouvoir, cette rhétorique de la carte est dorénavant critiquée. Les nouveaux acteurs offrent une nouvelle fabrique cartographique entre pratiques des « amateurs » dans un projet non lucratif et captation de traces dans un but lucratif. Cette nouvelle fabrique discute à la fois les référentiels géographiques, la capacités d’accès aux données et la personnalisation des cartes via les algorithmes. Que les traces soient laissées volontairement ou involontairement, personnalisées ou agrégées, c’est le « faire trace » (Jeanneret, 2011) qui permet d’écrire et de lire le territoire. Le processus de construction de la carte est ici judicieusement interrogé en observant cette construction cartographique entre le savoir cartographique et une sémiotique des cartes issue des SIC.

S’éloignant des cartes comme savoir géographique, Marta Severo et Laurent Beauguitte s’intéressent aux flux RSS. Dans le dixième chapitre, les auteurs proposent un regard critique sur les potentialités et les problèmes méthodologiques des traces numériques dans une définition de l’information géographique. L’analyse des dimensions spatiales dans l’actualité internationale s’appuie le plus généralement sur des bases de données privées, comme Factiva (Dow Jones). Les auteurs choisissent de les étudier à partir de 1304 flux RSS de la rubrique internationale du journal The New York Times. Les auteurs partent du postulat que le « web « 2.0 » » permet d’accéder à une information gratuite et en temps réel. Cette information s’avère tout de même coûteuse du fait des problèmes techniques et méthodologiques à résoudre pour automatiser leur qualification. Leur analyse conclue à une hiérarchie des lieux, une hypothèse qui reste valide depuis 50 ans (p. 233), et à la place prédominante des individus, célèbres et médiatiques, dans cette actualité internationale à dimension géographique.

Nicolas Douay et Maryvonne Prévost concluent cet ouvrage en analysant le rôle de la plateforme participative Carticipe dans les politiques urbaines. La carte même participative demeure un instrument de pouvoir selon les auteurs. Mais en s’intéressant plus précisément aux formes d’engagement, de participation et de négociation par la rencontre entre des savoirs d’experts et des savoirs d’habitants, ils décortiquent ces différents manière de « faire-carte » entre un territoire vécu ou administré. Le récit par entretiens plus que l’analyse des traces en elle-même présente le rôle prescriptif de ce dispositif sociotechnique au niveau de la participation. Cette participation, comme le concluent des travaux de recherche menés sur la thématique de la démocratie participative, est portée par des contributeurs ayant des activités militantes ou associatives, et avec pour thème le plus commenté celui des transports au niveau de l’open data. Les traces numériques du territoire ne sont pas analysées dans ce chapitre pour elles-mêmes mais mises en perspective avec les récits des créateurs de la plateforme et des contributeurs.

Pour conclure, cet ouvrage présente un panorama des questionnements théoriques et méthodologiques autour de la notion de « territoires numériques » et de « traces numériques ». L’extraction, la collecte, le traitement des données et la nécessité de repenser cette notion de territoire numérique sont balisées autant du point de vue des chercheurs que des praticiens. L’analyse des traces numériques, des territoires et la définition de nouvelles politiques urbaines ou territoriales doivent autant reposer sur des méthodes quantitatives que qualitatives. Poser en mise en garde dans l’ouverture de cet ouvrage, mais peu interroger par la suite, la question de l’éthique dans l’exploitation de ces traces ou de ces bases de données, de plus en plus liées à des individus, doit toujours être prise en compte dans ces études.

Pour répondre à la question initialement posée de qualification du terme territoire (est-il « physique » ou « numérique »?), nous soulignerons que l’ensemble de ces textes montre que le territoire est une construction dans le temps et qu’il se décompose en de multiples attributs. Chacun des textes présentés se propose d’analyser le territoire dans ses représentations sur le web ou à partir de méta-données enregistrées par les dispositifs numériques. Le territoire n’est pas plus physique, numérique que reconstruit à partir de l’analyse des traces des usagers du web et des dispositifs sociotechniques qui agencent ces traces eux-mêmes.