Преобразование твитов Twitter в баллы?

14

Я проводил некоторые исследования по использованию R для создания твиттера, но на самом деле я не нашел ни ответа, ни достойного учебника по моему вопросу.

Я заинтересован в том, чтобы извлекать твиты из твиттера с определенным хэштегом в течение определенного периода времени и составлять график расположения этих твитов на карте в QGIS или ArcMap.

Я знаю, что к твитам может быть привязана геолокация, но как мне извлечь эту информацию?

Bradley_Jay
источник
Это может помочь: mike.teczno.com/notes/streaming-data-from-twitter.html Я признаю, что не все прочитал, но, похоже, они показывают, как получить местоположение каждого твита.
ianbroad
1
кажется, что вы можете потерять теги продукта "r", "qgis" и "arcgis", поскольку вам просто нужно извлечь координаты из API Twitter. Получив эту информацию, вы добавите баллы к любому продукту, используя его стандартную функциональность
Стивен Лид,
Ошибка 401 при запуске кода.
Шихар

Ответы:

22

Я нашел способ, используя чисто Python, чтобы получить координаты для твитов, используя фильтр слов. Не похоже, что многие люди включают местоположение в свои твиты.

Это может быть не то, что вам нужно, потому что это потоковая передача данных. Вы можете проверить это, вставив уникальное слово фильтра, а затем отправив его в Твиттере. Вы увидите, как ваш твит появится в Python практически мгновенно. Это было бы здорово использовать для какого-то грандиозного события.

Вам нужно будет установить Tweepy .

pip install tweepy

И получите ключ API Twitter .

Затем вы можете использовать этот скрипт в качестве шаблона:

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

Ознакомьтесь также с этой документацией в Твиттере, она показывает, что вы можете вставить в фильтр.

Вот результат установки фильтра как «Хэллоуин» на несколько минут:

введите описание изображения здесь

И, черт возьми, вот первые 2000 твитов, в которых упоминается Хэллоуин!

http://i.stack.imgur.com/bwdoP.png введите описание изображения здесь

Счастливого Хэллоуина!

ianbroad
источник
Это было бы на 100% то, что я искал, если бы я как-то позволил мне прочесывать старые твиты. Я собираюсь поиграть с этим и посмотреть, что я могу придумать. Большое спасибо!
Bradley_Jay
@Bradley_Jay Нет проблем. Согласно следующему, Twitter на самом деле не делает старые твиты доступными. stackoverflow.com/questions/1662151/...
ianbroad
Вы также можете фильтровать с помощью ограничительной рамки вместо «дорожки», например, местоположения = [- 180, -90,180,90]
Мэтт