Próbuję użyć tweepy do pobierania tweetów za pomocą lokalizacji tweet, a nie według lokalizacji użytkownika. Obecnie mogę pobierać tweety z lokalizacją użytkownika, ale nie mogę uzyskać lokalizacji tweetów, nawet jeśli geo_enabled
zwraca True.Skreślić tweety przez tweet lokalizację i lokalizację użytkownika
Załóżmy na przykład, że user_a
pochodzi z Nowego Jorku, ale tweetuje z Kalifornii. Chcę zarówno lokalizację użytkownika, Nowy Jork, jak i lokalizację tweet w Kalifornii.
Kod:
import tweepy
from tweepy import Stream
from tweepy import OAuthHandler
from tweepy.streaming import StreamListener
import pandas as pd
import json
import csv
import sys
reload(sys)
sys.setdefaultencoding('utf8')
ckey = 'key'
csecret = 'secret'
atoken = 'token'
asecret = 'secret'
#csvfile = open('StreamSearch.csv','a')
#csvwriter = csv.writer(csvfile, delimiter = ',')
class StdOutListener(StreamListener):
def __init__(self, api=None):
super(StdOutListener, self).__init__()
self.num_tweets = 0
def on_data(self, data):
self.num_tweets += 1
if self.num_tweets < 5: #Remove the limit of no. of tweets to 5
print data
return True
else:
return False
def on_error(self, status):
print status
l = StdOutListener()
auth = OAuthHandler(ckey, csecret)
auth.set_access_token(atoken, asecret)
stream = Stream(auth, l)
stream.filter(locations = [80.10,12.90,80.33,13.24]) #user location
Wyjście
userLocation, userTimezone, Coordinates,GeoEnabled, Language, TweetPlace
London,UK Amsterdam FALSE en null
Aachen,Germany Berlin TRUE de null
Kewaunee Wi TRUE en null
Connecticut, Eastern Time (US & Canada) TRUE en null
TRUE en null
Lahore, City of Gardens London TRUE en null
NAU class of 2018. Arizona FALSE en null
FALSE en null
Pacific Time (US & Canada) FALSE en null
Powyższe dane wyjściowe jest czyszczony wersję masywnych danych. Mimo że włączone jest Geolocation
, nie mogę uzyskać lokalizacji tweet ani co-ordinates
.
To bardzo szerokie pytanie, daj nam znać, co próbowałeś. – SIslam
@SIslam Zawarte kod i wyjście –
Mogą być związane- http://stackoverflow.com/a/16892093/4065350 –