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() |
Partager