Skip to content
Snippets Groups Projects
Forked from Hudelot / CS_Coding_WEEKS_Tweeter_Analysis
6 commits behind the upstream repository.

Fonctionnalité 1 : Prise en main de tweepy - Se connecter à l'API Twitter

Pour pouvoir faire ce projet, il est nécéssaire de collecter l'ensemble des tweets relatifs à une élection (ou au mieux un ensemble de tweets représentatifs).

Pour se faire, Twitter a mis à la disposition de tous un ensemble d'APIs permettant un accès programmatique à ses données. Vous avez vu le concept d'APis dans le cours de SIP mais si quelques révisions sont nécessaires, vous pouvez consultez le cours d'OpenClassRooms sur les APIs REST. La vidéo du tutorial de S. Saunier du Wagon est aussi une très bonne introduction pour les débutants.

Les APIs Twitter sont nombreuses et très bien décrites ici. Celle qui nous intéresse particulièrement ici est l'API Search qui permet de récupérer des tweets historiques à partir de mots clés. Twitter a recemment revu sa politique de mise à disposition de ses données et de facturation de cette dernière et la recherche se limite maintenant à 7 jours précédents la recherche.

De nombreux outils ont été développés pour faciliter l'utilisation de ces APIs et notamment en python, plusieurs biblithèques sont disponibles :

Dans ce projet, nous allons utiliser Tweepy qui est une des bibliothèques qui permet d'accéder relativement facilement aux APIS twitter. La première chose à faire est donc d'installer tweepy soit via PyCharmEdu soit en ligne de commande via la commande:

pip install tweepy

Vous pouvez tester l'installation en exécutant l'instruction import tweepy sur votre interpréteur python.

Etape 1 : se créer un compte twitter.

La première étape pour cette fonctionnalité est de se créer un compte Twitter si vous n'en avez pas car il est nécessaire pour pouvoir avoir accès à l'API.

Après avoir créé votre compte, il est nécessaire d'aller sur le portail de gestion des applications pour créer une app. A nouveau, on rentre ici dans un processus assez long (un questionnaire avec pas mal de champ à compléter) qui passe par le dépôt d'une demande de candidature pour avoir un compte developper et avoir accès au portail developper

Une fois là, vous pouvez maintenant créer une app en complétant encore une fois l'ensemble des informations demandées.

Après cette étape, vous pouvez maintenant récupérer vos Consumer API keys et Access token & access token secret nécéssaires pour se connecter.

Vous sauverez les différentes valeurs de :

  • Consumer Key (API Key)
  • Consumer Secret (API Secret)
  • Access Token
  • Access Token Secret

dans un fichier credentials.py dont le squellette pourrait être le suivant :

# Twitter App access keys for @user

# Consume:
CONSUMER_KEY    = ''
CONSUMER_SECRET = ''

# Access:
ACCESS_TOKEN  = ''
ACCESS_SECRET = ''

Attention, ce fichier ne sera jamais mis sur votre dépôt git (ni local, et surtout pas distant)

Etape 2 : le Hello Word de Tweepy

Vous pouvez maintenant faire le Hello World de Tweepy qui consiste en une fonction d'initialisation de l'API Twitter.

import tweepy
# We import our access keys:
from tweet_collection.credentials import *   

def twitter_setup():
    """
    Utility function to setup the Twitter's API
    with an access keys provided in a file credentials.py
    :return: the authentified API
    """
    # Authentication and access using keys:
    auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
    auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)

    # Return API with authentication:
    api = tweepy.API(auth)
    return api

Sur cette base, nous allons maintenant initialiser notre module de collecte de tweets. Ajouter à votre projet un package nommé twitter_collect. Si vous le faites directement avec PyCharm Edu, vous devriez avoir automatiquement la création d'un fichier __init__.py dans le répertoire correspondant à votre package. Dans le cas contraire, vous devez ajouter manuellement ce fichier à votre répertoire pour en faire un package python.

Au passage, voici un petit rappel sur les modules et les packages en python.

Dans le package twitter_collect, ajouter un module twitter_connection_setup (un fichier twitter_connection_setup.py) dans lequel vous écrirez donc les fonctions nécessaires pour une connexion à l'API Twitter.

A l'aide de pytest, tester votre fonction de connexion à l'API ! Nous verrons plus tard une méthode de developpement appelée Test Driven Development qui consiste à écrire les tests avant les fonctions ou autres objets de votre programme mais en attendant, prenez le temps d'ajouter les tests permettant de tester les différentes fonctionnalités de votre projet.

Ici par exemple, il s'agit d'ajouter un module test_monmodule.py à votre projet et de tester que la fonction de connexion à l'API vous renvoit bien un objet non nul.

Nous avons fini ici la fonctionnalité 1. Avant de passer à la fonctionnalité suivante, il vous est demandé de :

  • Ajouter votre fichier à votre dépôt git.
  • Faire un commit
  • Pousser (Push) votre code vers votre dépôt distant sur GitLab.

Un peu de prise de recul

Vous avez peut-être trouvé cette première étape assez pénible et avec de nombreuses étapes de création de comptes et d'engagement, beaucoup de formulaires assez détaillés à remplir ... Pour éviter ces étapes, une alternative aurait été de vous founir un jeu de données et de vous faire travailler directement sur ce jeu de données.

Cependant, replaçons nous dans un contexte où vous seriez mandatés par un parti politique pour faire ce travail et même dans le cadre où vous pouvez avoir plusieurs clients qui sont des partis politiques différents. Comment cela aurait impacté cette étape ? Il pourrait, par exemple, être utile de définir la notion d'utilisateur et de prendre cela comme un paramètre de votre utilitaire de connexion à l'API Twitter.

Plus globalement, que sommes-nous en train de faire ? Certaines actualités récentes, les scandales autour de la société Cambridge Analytica, le RGPD... devraient vous permettre de comprendre pourquoi l'accès à ce type de données devient de plus en plus controlé.

Prenez donc le temps de lire rapidement les règles et les politiques d'accès aux données de Twitter.

Nous pouvons maintenant passer à la Fonctionnalité 2 : Collecter des tweets pour la collecte des données en elles-mêmes.