Convertire i tweet di Twitter in punti?


14

Ho fatto qualche ricerca sull'uso di R per datamine su Twitter, ma non ho trovato una risposta o un tutorial decente per la mia domanda.

Sono interessato a estrarre tweet da Twitter con un determinato hashtag, entro un certo periodo di tempo, e tracciare la posizione di tali tweet su una mappa in QGIS o ArcMap.

So che i tweet possono avere una geolocalizzazione legata a loro, ma come posso estrarre queste informazioni in primo luogo?


Questo potrebbe aiutare: mike.teczno.com/notes/streaming-data-from-twitter.html Ammetto di non aver letto tutto, ma sembra che mostrino come ottenere la posizione di ogni tweet.
ianbroad,

1
sembra che potresti perdere i tag del prodotto "r", "qgis" e "arcgis" poiché devi solo estrarre le coordinate dall'API di Twitter. Una volta che hai queste informazioni, aggiungeresti i punti a qualsiasi prodotto usando la sua funzionalità standard
Stephen Lead,

Errore 401 in corso durante l'esecuzione del codice.
shikhar,

Risposte:


22

Ho trovato un modo usando puramente Python per ottenere le coordinate per i tweet usando un filtro di parole. Non sembra che molte persone includano la posizione con i loro tweet.

Questo potrebbe non essere quello che stai cercando perché si tratta di dati di streaming live. Puoi testarlo inserendo una parola filtro univoca e poi twittando quella parola dal tuo account Twitter. Vedrai il tuo tweet apparire in Python quasi all'istante. Sarebbe davvero bello da usare per qualche grande evento.

Dovrai installare Tweepy .

pip install tweepy

E ottieni una chiave API di Twitter .

Quindi puoi usare questo script come modello:

import json
from tweepy import Stream
from tweepy import OAuthHandler
from tweepy.streaming import StreamListener

#Enter Twitter API Key information
consumer_key = ''
consumer_secret = ''
access_token = ''
access_secret = ''

file = open("C:\\Output.csv", "w")
file.write("X,Y\n")

data_list = []
count = 0

class listener(StreamListener):

    def on_data(self, data):
        global count

        #How many tweets you want to find, could change to time based
        if count <= 2000:
            json_data = json.loads(data)

            coords = json_data["coordinates"]
            if coords is not None:
               print coords["coordinates"]
               lon = coords["coordinates"][0]
               lat = coords["coordinates"][1]

               data_list.append(json_data)

               file.write(str(lon) + ",")
               file.write(str(lat) + "\n")

               count += 1
            return True
        else:
            file.close()
            return False

    def on_error(self, status):
        print status

auth = OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_secret)
twitterStream = Stream(auth, listener())
#What you want to search for here
twitterStream.filter(track=["Halloween"])

Dai un'occhiata anche a questa documentazione da Twitter, mostra cosa puoi mettere nel filtro.

Ecco il risultato di mettere il filtro come "Halloween" per alcuni minuti:

inserisci qui la descrizione dell'immagine

E per l'inferno, ecco i primi 2000 tweet che menzionavano Halloween!

http://i.stack.imgur.com/bwdoP.png inserisci qui la descrizione dell'immagine

Felice Halloween!


Questo sarebbe al 100% quello che stavo cercando se in qualche modo mi permettesse di passare attraverso i tweet più vecchi. Ho intenzione di giocare con questo e vedere cosa posso inventare. Grazie mille!
Bradley_Jay,

@Bradley_Jay Nessun problema. Secondo quanto segue, Twitter non rende realmente disponibili i tweet più vecchi. stackoverflow.com/questions/1662151/...
ianbroad

Puoi anche filtrare con un rettangolo di selezione invece di "traccia", ad esempio località = [- 180, -90,180,90]
Matt,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.