2017-08-12 56 views
3

我是新的python。幫幫我。 問題: 我收到了相應用戶的所有推文。 我想n [假設(n = 20)]各自的用戶的最新tweet沒有獲取n的推文?下面 是我的代碼:如何從任何用戶的推特獲得'n'推文

def get_all_tweets(screen_name): 


    auth = tweepy.OAuthHandler(consumer_key, consumer_secret) 
    auth.set_access_token(access_key, access_secret) 
    api = tweepy.API(auth) 

    alltweets = [] 
    # make initial request for most recent tweets (200 is the maximum allowed count) 
    new_tweets = api.user_timeline(screen_name=screen_name,count=200) 

    alltweets.extend(new_tweets) 
    print len(alltweets) 

    oldest = alltweets[-1].id - 1 

    while len(new_tweets) > 0: 
     print "getting tweets before %s" % (oldest) 
     new_tweets = api.user_timeline(screen_name=screen_name, count=200, max_id=oldest) 

     # save most recent tweets 
     alltweets.extend(new_tweets) 


     # update the id of the oldest tweet less one 
     oldest = alltweets[-1].id - 1 

     print "...%s tweets downloaded so far" % (len(alltweets)) 



    f = open('testfile.txt', 'w+') 
    for tweet in alltweets: 
     f.write(str(tweet.text)) 
     f.write('\n') 
     f.close() 
    tweets = (tweet.text) 
    return tweets 
    pass 
# to encode the data 
reload(sys) 
sys.setdefaultencoding('utf-8') 

if __name__ == '__main__': 
    get_all_tweets("xyz") 

回答

1

您是否嘗試過編輯此行只得到20?

變化:

new_tweets = api.user_timeline(screen_name=screen_name, count=200) 

要:

new_tweets = api.user_timeline(screen_name=screen_name, count=20) 
+0

它顯示與此相同的輸出: new_tweets = api.user_timeline(screen_name = screen_name,count = 200) – aneeket

+0

你是否已經計算了實際返回的推文數量?它可能會被限制爲20.即使你的計數設置爲200,這並不意味着它實際上會返回200.如果我設置count = 200,API可以設置爲20 – AK47

+0

,它顯示:「在556815543647215616 之前獲得推文。 0.399鳴叫下載到目前爲止 越來越鳴叫98265272319 之前... 599個鳴叫下載,以便344033624594735103 ... 759個鳴叫下載到目前爲止 越來越鳴叫前遠 越來越鳴叫224551285863624703 之前... 759個鳴叫到目前爲止下載」之類這個。如果計數= 20,那麼它只顯示20的差異獲得推文 – aneeket

0

如果 'TESTFILE.TXT' 包含的鳴叫從最新到最舊:

n = whatever value you want 
tweetArr = [] 
f = open("test file.txt:, "r") 
count = 1 
for line in f: 

    if count <= n: 
     tweetArr.append(line) 

    count += 1 

tweetArr包含N個最近的鳴叫

+0

我試過我們的代碼bt得到了與前面相同的輸出。 – aneeket

相關問題