2013-03-21 3 views
4

Использование tweepy мы можем искать твиты на местах и ​​для нескольких местах, таких как:Использование Tweepy для сортировки твитов по местоположению

stream.filter(locations=[-122.75,36.8,-121.75,37.8,-74,40,-73,41], track=terms) 

Однако, когда я пытаюсь поставить все твиты из Нью-Йорка в одном списке и твиты из SF в другом списке, я не могу их назначить ни одному из списков. Это мой фрагмент кода:

NY = 74,40,-73,41 
NewYorkCNN = [] 
if status.coordinates == NY or status.place == 'New York': 
    for term in terms: 
     if term in status.text: 
      NewYorkCNN.append(term) 

Как они могут быть правильно помещены в правильный список?

+0

Не могли бы вы предоставить полный код, который вы используете, если вопрос остается открытым? – alecxe

ответ

3

Вероятно, вы уже нашли ответ, но с этим я тоже столкнулся, и через некоторое время выяснил довольно простое решение.

Вот как я проверяю координаты и выясняю, следует ли назначать данные твитов в британскую или американскую базу данных.

Ключевое слово «координат», за которым следует [1] или [2], получает метаданные lat/long из твита и сравнивает их с ограничителем, указанным в строке ниже.

Я надеюсь, что это помогает:)

class CustomStreamListener(tweepy.StreamListener): 

    def check_ukcoords(self, status): 
     if status.coordinates is not None: 
      lat = status.coordinates['coordinates'][1] 
      lng = status.coordinates['coordinates'][0]   
      return 49.7 < lat < 58.8 and -6.1 < lng < 1.7 

    def check_uscoords(self, status): 
     if status.coordinates is not None: 
      lat = status.coordinates['coordinates'][1] 
      lng = status.coordinates['coordinates'][0]   
      return 25.1 < lat < 49.1 and -125 < lng < -60.5 
Смежные вопросы