Этот код сканирует твиты, содержащие ключевое слово, и записывает координаты твитов во вновь созданном файле CSV.
Можно ли добавить несколько условий, таких как приведенные ниже, изменив "twitterStream.filter (track = [" food "])"?
keywords = ‘food'
limit = 1000
near = 'Detroit MI'
within = '15km'
since = '2018-06-01'
until = '2018-06-05'
lang = ‘en'
Я знаю, что фильтр-запрос может содержать несколько условий, но я не уверен, что он может также включать сложные условия, такие как место, дата начала или дата окончания. Также мне интересно, можно ли использовать filterquery на python.
Кроме того, этот код создает файл CSV ничего, кроме пустого файла, хотя при запуске он хорошо печатает координаты твитов.
вот полный код ниже.
import json
from tweepy import Stream
from tweepy import OAuthHandler
from tweepy.streaming import StreamListener
consumer_key=".."
consumer_secret=".."
access_token=".."
access_secret=".."
file = open("result.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())
twitterStream.filter(track=["food"])