Archives par étiquette : RCurl

Mesurer l’espace télévisuel accordé à un sujet

Cet exemple condense trois des éléments qui sont développés dans ce blog : la présentation d’une base de données publique et son utilisation; des éléments de programmation, et des résultats de visualisation des données.

Les émissions de télévision, un matériau sous-exploité

Beaucoup de chercheurs en sciences sociales sont amenés à s’intéresser au traitement médiatique d’un sujet donné. Pour les sources, si les dépêches d’agence étaient autrefois privilégiées du fait de leur brièveté, c’est aujourd’hui vers la presse écrite qu’ils se tournent majoritairement. Il s’agit en effet d’une source commode d’accès : bien archivée, disponible de façon exhaustive en bibliothèques et de plus en plus directement sur internet et interrogeables par mots-clés (Factiva, par exemple).

Cependant, on pourrait contester cet usage privilégié :

  • le public touché est très restreint par rapport à celui de la télévision, et cet écart ne fait que s’accroître
  • méthodologiquement, le contenu textuel brut est long et malaisé à traiter. En particulier, il ne peut — sauf à recoder intégralement — distinguer les usages propres et figurés d’un mot (et donc faire la différence entre deux occurrences aussi différentes que “le danger des sectes” et “François Bayrou, chef de secte”, la première seulement étant intéressante pour nous)

Les contenus télévisuels sont paradoxalement très peu représentés dans les études quantitatives qui prennent les médias pour objet. Pour paraphraser Solow, on pourrait presque dire que la télévision est partout, sauf dans les statistiques des chercheurs en sciences sociales. Le problème principal est d’ordre technique : comment coder et synthétiser rapidement l’information sur les programmes télévisuels ?

Une source commode et fiable : la base de l’INA

Complétude

En France, l’existence et l’accessibilité des archives de l’Institut national de l’audiovisuel (INA) permettent fournir de pallier cette difficulté. Au titre du dépôt légal de l’audiovisuel français, l’INA conserve l’ensemble des programmes diffusés par les différentes chaines de télévision ou de radio. Le recensement opéré est ainsi a priori complet, et chaque document est déjà codé de manière relativement fiable, précise et complète, par mots-clefs et selon diverses informations (chaine de diffusion, durée, type d’émission…).

Fiabilité

Le codage est réalisé par le personnel au moment du dépôt des fichiers. Certes imparfait (les fiches sont remplies par des personnes différentes, sur une période de plus de quinze ans), il est cependant relativement efficace. Les recoupements ponctuels effectués sur la base des recensions faites par d’autres moyens montrent que le codage n’est pas arbitraire, et que la chronologie que l’on peut en tirer correspond assez bien à celle obtenue par d’autres moyens. De fait, tout sujet relativement institué, même s’il a des frontières floues, a de bonnes chances d’être bien représenté. C’est par contre moins vrai des « nouveaux » sujets : il faut sûrement attendre qu’un « problème public » soit reconnu comme tel pour qu’on puisse trouver une notice qui le mentionne). De manière générale, il est de bonne politique de chercher à « étendre » les mots clés, c’est-à-dire de faire des requêtes pour des termes proches (par exemple, pour secte : gourou, manipulation mentale, etc.), et de compiler tous les résultats obtenus.

Accessibilité

Si l’INA est une institution accueillante[1], il se trouve que depuis peu, une partie de sa base de données est accessible directement et gratuitement par internet. La période couverte commence au 1er janvier 1995, et la base recense les différents médias hertziens et câblés ainsi que les radios, au fur et à mesure de leur création. La recherche par mots-clefs permet donc une étude rapide et exhaustive sur un terme donné.

Un petit obstacle technique

Comment télécharger les résultats correspondant à une requête particulière, pour les traiter finement (nettoyages, tris croisés, représentations graphiques) ? Ceux-ci sont présentés sous la forme d’un tableau de texte, qui devrait être simple à utiliser, par un copier-coller dans un tableur par exemple.

Malheureusement, cela se révèle impossible, pour des raisons liées au fonctionnement du site[2]. Cependant, comme le navigateur affiche une forme régulière (tableau), il doit bien y avoir un moyen de récupérer les données affichées en gardant la régularité de cette forme.

On se propose de présenter ici une procédure simple qui permet de résoudre ce problème. Elle passe par le recours à quelques lignes de programmation, ici en R. On présente ici rapidement le code, qui est réutilisable tel quel. L’explication détaillée de tous les élélemnts de la syntaxe fera l’objet de prochains billets.

Une procédure de collecte automatisée des données

Faire une recherche sur le catalogue en ligne

Dans le cadre d’une recherche sur la question des sectes en France, on a tenté de trouver une manière de faire une étude exhaustive des émissions télévisuelles sur le sujet. Une fois connecté au catalogue en ligne, on saisit alors la requête que l’on souhaite effectuer dans un formulaire simple. Ici, on veut obtenir toutes les occurrences du terme « secte » ou « sectaire » (au singulier et au pluriel), du 1er janvier 1995 au 31 décembre 2010, sur les chaines hertziennes.

Formulaire de requête sur la base de l’Inathèque

On obtient environ 2500 résultats, qu’on veut conserver afin de les consulter ; on clique alors sur « Afficher tous les résultats ». Le navigateur affiche lentement l’ensemble de la page (plusieurs minutes parfois), et c’est cette page que l’on va manipuler pour ensuite pouvoir l’ouvrir avec un tableur classique ou un logiciel de statistiques. Notons pour l’instant l’adresse (URL) de cette page, qui est de la forme http://inatheque.ina.fr/Ina/ws/dltv/dlweb/general avec de nombreux signes cabalistiques après (si vous regardez bien, vous verrez les mots que vous avez demandé entre deux signes %).

Extraire les données de la page web

On va ensuite travailler avec R, à partir de cette URL, pour la traduire en un fichier lisible par un tableur (au format .csv : simple fichier texte où les données sont séparées par des points-virgules).

Installer R

Pour l’installation et les premiers usages de R, on se permet de renvoyer au site du programme. On suppose aussi que vous disposez d’un tableur (de type Excel ou, mieux, Libre Office). Pour faire fonctionner le programme, il faut en plus installer deux modules[3] spécifiques de R : RCurl et XML, qui permettent de télécharger la page web et d’en extraire les informations qui nous intéressent.

Charger la page et en extraire les informations

Un petit programme permettant de télécharger et traiter la page dont on a noté l’URL :

library(RCurl)
library(XML)

webpage <- getURL("http://inatheque.ina.fr/Ina/ws/dltv/dlweb/general/ResultSet?rpp=-50&upp=0&w=NATIVE%28%27ITOUSTEXT+ph+like+%27%27secte%27%27%2C%27%27sectes%27%27%2C%27%27sectaire%27%27%2C%27%27sectaires%27%27%27%29&r=1", .encoding="LATIN1")
page <- readLines(tc <- textConnection(webpage)); close(tc)
arbre.page <- htmlTreeParse(page, useInternalNodes = TRUE)

emissions <- xpathSApply(arbre.page,
                         "//div[contains(@class, 'result_line')]",
                         xmlValue)

emissions.clean <- gsub("\\t|\\n", "", emissions)
emissions.final <- gsub(" {20,180} ", ";", emissions.clean)

write.csv(emissions.final,
          file="/Users/eollion/SectesTV/INA-sectes.csv",
          fileEncoding='latin1')

Les deux premières lignes chargent les modules. L’opération de téléchargement de la page s’effectue ensuite (getURL), puis on analyse la structure de la page web chargée (on parse du HTML).

Le bloc suivant (xpathSapply) sélectionne ce qui correspond aux lignes du tableau affichées dans le navigateur. Elles sont identifiées d’une certaine manière dans le code HTML pour être affichées sous forme de lignes, et c’est ainsi qu’on peut les repérer ; ça paraît obscur, mais il y a des outils pour se repérer et écrire ce genre de commandes assez facilement. Voir chez François Guillem pour des bonnes premières explications sur ce point.

Ce qu’on a récupéré dans emissions ressemble presque à ce qu’un navigateur afficherait, sauf qu’ici les écarts de position sur la page sont représentés par des espaces. Il suffit de les remplacer par des points-virgules, et après un peu de nettoyage d’espaces, on a le notre tableau sous format .csv. Il ne reste plus qu’à l’écrire dans un fichier en sortie.

Voilà, normalement on peut ouvrir le fichier produit dans un tableur, et en principe tout va bien, y compris les accents (il se peut qu’Excel soit capricieux, on verra plus tard comment contourner ça). On peut alors faire un peu de nettoyage si nécessaire, et de recodage, par exemple les chaînes (rechercher « La Cinquième » et remplacer par « France 5 », etc.), ou pour mettre ensemble des « types » d’émissions proches.

Après constitution de la base, nettoyage et recodage de celle-ci, on en a conservé 1834 entre le 1er janvier 1995 et le 31 décembre 2010. La table est donc prête, on peut procéder à des représentations graphiques, ou des statistiques, et commencer les analyses sociologiques.

Les graphiques ci-dessous sont un exemple de visualisations possibles et rapides grâce à ggplot, moyennant quelques manipulations, que l’on abordera prochainement.

 

Représentation par chaine
Histogrammes

 


Représentation par type de programme et par chaine
Polygones de fréquence

 

Représentation par chaine

Nombre de programmes par jour
(période de 2 mois)

 


  1. De nombreux chercheurs ont d’ailleurs tiré profit des opportunités offertes par l’Inathèque. Située dans les locaux de la Bibliothèque nationale de France, elle met à disposition du public un ensemble important de ressources : les enregistrements comme les notices sont librement consultables, et un service d’aide à la recherche dans la base de données de l’INA est proposé.  ↩

  2. On peut imaginer que c’est volontaire, le résultat d’une stratégie visant à éviter le pillage des données par des robots.  ↩

  3. Packages et modules sont deux mots pour la même chose. Aller dans le menu « Installateur de Package », cliquer sur « Acquérir liste », rechercher ceux que vous souhaitez (ici RCurl et XML), puis installer.  ↩

étienne

Chercheur CNRS (SAGE-Université de Strasbourg). Données numériques, sociologie politique, épistémologie des sciences sociales.

More Posts