IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau/Web Python Discussion :

récupération de tweet avec un mot clé appartenant à un .csv


Sujet :

Réseau/Web Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2016
    Messages : 28
    Points : 17
    Points
    17
    Par défaut récupération de tweet avec un mot clé appartenant à un .csv
    Bonjour à tous,
    je suis actuellement en stage au sein d'une entreprise qui travail sur les zone d'aléa pour les inondations.
    je voudrais pouvoir effectuer une recherche de tweet géolocalisé avec un certain mot clé, ce que j'arrive à faire avec mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
     
     
    import arcpy
    import json
    import tweepy
    import time
    import csv
    from tweepy.streaming import StreamListener
     
     
    #Enter Twitter API Key information
    consumer_key = ''
    consumer_secret = ''
    access_token = ''
    access_secret = ''
     
     
    auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
    auth.set_access_token(access_token, access_secret)
    api = tweepy.API(auth)
    # céation d'un fichier csv pour stocker les données colléctées
    with open("D:/VIGNERON/Output.csv", "w") as csvfile:
            file = csv.writer(csvfile, delimiter=';',quotechar='|', quoting=csv.QUOTE_MINIMAL)
            file.writerow(['Nom_utilisateur'] + ['Date'] + ['Evenement'] + ['Source'] + ['Commune'] + ['Insee'] +['Localisation'] + ['Contenu'] + ['X'] + ['Y'])
     
    data_list = []
     
    count = 0
    # entrez votre mot clé désiré
    motcle = "Paris"
     
    class StdOutListener(StreamListener):
            def on_status(self, status):
                    json_data = status._json
                    global count
                    # compteur à modifier selon votre désire
                    if count <= 10 :
                            coord = json_data["coordinates"]
                            #  affichage des tweets seulement si ils possèdent une localisation
                            if coord != None:
                                    user = status.user.name.encode('ascii', 'ignore').decode('ascii')
                                    print ("Nom d'utilisateur : " + user)
                                    date = str(status.created_at)
                                    print("Date de publication : " + str(status.created_at))                                        
                                    evenement = "Innondation"
                                    print ("Evenement : " + evenement)
                                    source = "twitter"
                                    print ("source : " + source )
                                    commune = "Null"
                                    print ("Nom de la commune : " + commune)
                                    insee = "Null"
                                    print ("Code Insee commune : " + insee)
                                    localisation = "Null"
                                    print ("localisation : " + localisation)
                                    contenu = status.text.encode('ascii', 'ignore').decode('ascii')
                                    print("Tweet text: " + contenu)
                                    lon = coord["coordinates"][0]
                                    lat = coord["coordinates"][1]
                                    print ("Longitude : " + str(lon))
                                    print ("Latitude : " + str(lat))
                                    #écriture des infos dans le fichier de sortie
                                    file = csv.writer(open("D:/VIGNERON/Output.csv", "a"), csvfile, delimiter=';' , quotechar='|' , quoting=csv.QUOTE_MINIMAL )
                                    file.writerow([user]+[date]+[evenement]+[source]+[commune]+[insee]+[localisation]+[contenu]+[lon]+[lat])
     
                                    count += 1
                                    print count
                            return True
                    else :
                            return False
                            file.close()  
     
     
     
            def on_error(self, status_code):
                    print('Got an error with status code: ' + str(status_code))
                    return True # To continue listening
     
            def on_timeout(self):
                    print('Timeout...')
                    return True # To continue listening
     
     
    #connexion au flux twitter
    listener = StdOutListener() 
    stream = tweepy.Stream(auth, StdOutListener())
    stream.filter(track=[motcle])
    je voudrais à partir de ce moment pouvoir streamer twitter avec comme mot clé de recherche une liste de commune présente dans un fichier .csv Bd_Commune
    j'arrive à récupérer l'information qui m’intéresse comme mot clé avec le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    r = csv.reader(open("D:/VIGNERON/BD_Commune.csv", "r"),delimiter = ';')
    for row in r:
       commune = row[0]
       insee = row[1]
       print commune , insee

    Mon problème est que je ne sais pas où placer cette lecture de fichier comme mot clé pour ma recherche.


    J'aurais aussi voulu pouvoir récupérer les tweets non plus en live mais sur la journée précédente, quelqu'un aurait-il une idée pour réaliser tout ceci

  2. #2
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2016
    Messages : 28
    Points : 17
    Points
    17
    Par défaut
    Après plus d'une semaine de recherche j'ai réussi à faire ce que je voulais.
    Je post donc mon code ici, Si ça peut aider des personnes.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
     
    # coding: utf8
     
    import chardet
    import tweepy
    import csv
    import codecs
     
    #Entrer Twitter API informations
    consumer_key = ''
    consumer_secret = ''
    access_token = ''
    access_secret = ''
     
    #connexion à l'API twitter avec les code ci-dessus
    auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
    auth.set_access_token(access_token, access_secret)
    api = tweepy.API(auth)
     
    #Création d'un fichier de sortie au format .csv
    with codecs.open("D:/VIGNERON/test1.csv", "w" , encoding='iso8859-1') as csvfile:
            file = csv.writer(csvfile, delimiter=';',quotechar='|', quoting=csv.QUOTE_MINIMAL, dialect='excel')
            file.writerow(['Nom_utilisateur'] + ['Date'] + ['Evenement'] + ['Source'] + ['Commune'] + ['Insee'] +['Localisation'] + ['Contenu'] + ['media']+ ['X'] + ['Y'] )
     
     
    # Lecture de mes fichier commune, le traite regroupant les commuene sans caractères spéciaux
    # Le brut regroupant les communes avec caractères spéciaux
    # Les recherche par mot clé passent outre les accents
    r = csv.reader(open("D:/VIGNERON/BD_Commune_traite.csv", "r"),delimiter = ';')
    r1 = csv.reader(open("D:/VIGNERON/BD_Commune_brut.csv", "r"),delimiter = ';')
     
    # Récuperation des communes brutes et placement dans un liste
    lst_com_brut = []
    for row in r1 :
            lst_com_brut.append(str(row[0]))
     
    # Récuperation des communes traitées ainsi que le code Insee et placement dans un liste
    lst_com_traite = []
    lst_insee = []
    for row in r :
            lst_com_traite.append(str(row[0]))
            lst_insee.append(str(row[1]))
     
    # Parcour de ma liste de commune
    for i in range (1,len(lst_com_traite)):
            commune = lst_com_traite[i]
            # Recherche de tweets
            for status in tweepy.Cursor(api.search,q=commune, count = 100, result_type = "recent").items(100):
                    # Récupération des données twitter et lecture du format Json
                    json_data = status._json
                    # Test pour savoir si le tweet comporte des coordonnées
                    if status.coordinates != None:
                            # Récuperation du nom de l'utilisateur
                            user = status.user.name.encode('ascii', 'ignore')
                            print ("Nom d'utilisateur : " + user)
                            # Récuperation de la date de publication
                            date = str(status.created_at)
                            print("Date de publication : " + str(status.created_at))
                            # Evenement survenu                                        
                            evenement = u"Innondation"
                            print ("Evenement : " + evenement)
                            # Source de l'information
                            source = u"twitter"
                            print ("source : " + source )
                            # Récuperation du nom de la commune
                            commune = lst_com_brut[i]
                            print ("Nom de la commune : " + commune)
                            # Récuparation du code Insee de la commune
                            insee = lst_insee[i]
                            print ("Code Insee commune : " + insee)
                            # Information complémentaire
                            localisation = u"Null"
                            print ("localisation : " + localisation)
                            # récuperation du texte tweeter 
                            contenu = status.text
                            contenu = contenu.replace("\n" , ". ")
                            contenu = contenu.replace(";" , ".")
                            contenu = contenu.encode('iso8859-1','ignore')
                            print("Tweet text: " + contenu)
                            url = json_data["entities"]["urls"]
                            if not url :
                                    print ("No url")
                            else :
                                    url = url[0]['expanded_url']
                            media = url
                            #media = media.encode('utf8')
                            print (u"Media présent : " + media)   
                            # récuperation des coordonnées du tweet
                            coord = json_data["coordinates"]
                            lon = coord["coordinates"][0]
                            lat = coord["coordinates"][1]
                            print ("Longitude : " + str(lon))
                            print ("Latitude : " + str(lat))
                            # Ajout des informations dans le .csv de sortie  
                            file =open("D:/VIGNERON/test1.csv", "a" )
                            wri = csv.writer(file , csvfile, delimiter=';' , quotechar='|' , quoting=csv.QUOTE_MINIMAL )
                            wri.writerow([user]+[date]+[evenement]+[source]+[commune]+[insee]+[localisation]+[contenu]+[media]+[lon]+[lat])
                            #fermeture du fichier rempli
                            #/!\ si le fichier n'est pas fermé il est inutilisable 
                            file.close()

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Telnet ou ? avec un mot de passe
    Par al1_24 dans le forum Réseau
    Réponses: 7
    Dernier message: 03/05/2005, 17h28
  2. Réponses: 8
    Dernier message: 09/03/2005, 10h47
  3. [VB.NET] Problem de récupération de variable avec une DLL
    Par ludovic85 dans le forum Windows Forms
    Réponses: 11
    Dernier message: 19/01/2005, 11h37
  4. Récupération des paramètres avec une procedure stockée
    Par samlerouge dans le forum Bases de données
    Réponses: 2
    Dernier message: 31/03/2004, 22h00
  5. Réponses: 13
    Dernier message: 20/03/2003, 08h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo