Mengubah tweet Twitter menjadi poin?

14

Saya telah melakukan penelitian tentang penggunaan R untuk datamine twitter, tetapi saya belum benar-benar menemukan jawaban atau tutorial yang layak untuk pertanyaan saya.

Saya tertarik untuk menarik tweet dari twitter dengan tagar tertentu, dalam jangka waktu tertentu, dan merencanakan lokasi tweet-tweet itu di peta di QGIS atau ArcMap.

Saya tahu bahwa tweet dapat memiliki geolokasi yang terkait dengannya, tetapi bagaimana cara saya mengekstrak informasi ini?

Bradley_Jay
sumber
Ini mungkin membantu: mike.teczno.com/notes/streaming-data-from-twitter.html Saya akui saya tidak membaca semuanya, tetapi tampaknya mereka menunjukkan cara mendapatkan setiap lokasi tweet.
ianbroad
1
sepertinya Anda dapat kehilangan tag produk "r", "qgis" dan "arcgis" karena Anda hanya perlu mengekstrak koordinat dari API Twitter. Setelah Anda memiliki informasi itu, Anda akan menambahkan poin ke produk apa pun menggunakan fungsionalitas standarnya
Stephen Lead
401 kesalahan terjadi saat menjalankan kode.
shikhar

Jawaban:

22

Saya menemukan cara menggunakan Python murni untuk mendapatkan koordinat tweet menggunakan filter kata. Sepertinya tidak banyak orang memasukkan lokasi dengan tweet mereka.

Ini mungkin juga bukan yang Anda cari karena ini adalah data streaming langsung. Anda dapat mengujinya dengan meletakkan kata filter yang unik dan kemudian tweet kata itu dari akun Twitter Anda. Anda akan melihat tweet Anda muncul di Python hampir secara instan. Ini akan sangat keren untuk digunakan untuk beberapa acara besar.

Anda harus menginstal Tweepy .

pip install tweepy

Dan dapatkan Kunci API Twitter .

Kemudian Anda dapat menggunakan skrip ini sebagai templat:

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"])

Lihat dokumentasi ini dari Twitter juga, ini menunjukkan apa yang dapat Anda masukkan ke dalam filter.

Inilah hasil dari menempatkan filter sebagai "Halloween" selama beberapa menit:

masukkan deskripsi gambar di sini

Dan untuk itu, inilah 2000 tweet pertama yang menyebutkan Halloween!

http://i.stack.imgur.com/bwdoP.png masukkan deskripsi gambar di sini

Selamat Halloween!

ianbroad
sumber
Ini akan menjadi 100% yang saya cari jika entah bagaimana akan membiarkan saya menyisir tweet yang lebih tua juga. Saya akan bermain-main dengan ini dan melihat apa yang bisa saya hasilkan. Terima kasih banyak!
Bradley_Jay
@Bradley_Jay Tidak masalah. Menurut yang berikut, Twitter tidak benar-benar membuat tweet yang lebih lama tersedia. stackoverflow.com/questions/1662151/…
ianbroad
Anda juga dapat memfilter dengan kotak pembatas alih-alih 'melacak' misalnya lokasi = [- 180, -90.180,90]
Matt