2016-02-02 81 views
2

此代碼僅流數據。我想在三天的時間範圍內提取數據。以json格式和特定​​時間範圍從twitter收集數據

import tweepy 
from tweepy import OAuthHandler 
from tweepy import Stream 
from tweepy.streaming import StreamListener 

# will pass key and token 
auth = OAuthHandler(consumer_key, consumer_secret) 
auth.set_access_token(access_token, access_secret) 

class TweetsListener(StreamListener): 

    def on_data(self, data): 
     try: 
      with open('name.json', 'a') as f: 
       f.write(data) 
       return True 
     except BaseException as e: 
      print("Error on_data: %s" % str(e)) 
     return True 

    def on_error(self, status): 
     print(status) 
     return True 

twitter_stream = Stream(auth, TweetsListener()) 
twitter_stream.filter(track=['XX']) 
+1

想要提取前3天或接下來3天的數據,就流而言,只能使用流式API訪問未來的數據。 – ZdaR

+0

我想從json格式的twitter收集前3天的數據。你能幫我嗎 ! –

回答

0

您正在使用的用於捕獲與給定的標準未來的鳴叫(on_data是當給定的搜索字詞鳴叫張貼的稱呼)的Twitter流API。您需要使用Twitter REST API來搜索以前的數據。見tweepy.Search()

參數:

q - 搜索字符串

since_id - 只返回 與ID大於狀態(即比更近)的 指定的ID。

+0

你能改變這段代碼嗎?可以保存爲json格式。 Instaed of csv。 –

+0

AUTH = tweepy.auth.OAuthHandler( 'X', 'X') auth.set_access_token( 'X', 'X') API = tweepy.API(AUTH) #打開/創建一個文件追加數據 csvFile =開放( 'result.csv', 'A') #使用CSV作家 csvWriter = csv.writer(csvFile) 用於tweepy.Cursor鳴叫(api.search, q = 「谷歌」, 因爲=「2014-02-14」, until =「2014-02-15」, lang =「en」)。items(): #寫一行到csv文件/我用編碼utf-8 csvWriter.writerow([tweet.created_at,tweet.text.encode('utf-8')]) print tweet.created_at,tweet.text csvFile.close() –

+0

你可以使用你原來的問題的代碼,從'on_data'方法只需改變'f.write(data)'用'f.write(json。轉儲(數據))'。儘管如此,你將不得不「導入json」。 –