使用Tweepy返回并保存800条朋友的推文

时间:2019-01-28 04:54:29

标签: python api twitter tweepy

我正在尝试使用api.home_timeline提取朋友的推文。我不想流式传输,但是我想保存800条推文,屏幕名称以及它们的喜欢/收藏夹到csv文件中。 Twitter一次只允许发送200条推文。鉴于我已经指定的密钥,到目前为止,这就是我所拥有的:

 def data_set(handle):
    auth=tweepy.OAuthHandler(CONSUMER_KEY,CONSUMER_SECRET)
    auth=set_access_token(ACCESS_KEY,ACCESS_SECRET)
    api=tweepy.API(auth)
    count_tweets=api.home_timeline(screen_name=handle,count=200)
    twits=[]
    tweet_data=[tweet.text for tweet in count_tweets]

    for t in count_tweets:
       twits.append(t)

if __name__== '__main__':
tweet_data('my twitter name')

我最初的计划是拥有多个count_tweets,例如count_tweet1等。我不确定如何继续其余的工作。任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:0)

Twitter跟随pagination。对于每个请求,您最多发出200条推文(在home_timeline的情况下)。您获得的200条推文是基于受欢迎程度的。您可以通过遍历页面从用户的时间轴获取所有tweet。 Tweepy提供Cursor功能来遍历页面

针对您的案例编辑的代码:

def data_set(handle):
    auth=tweepy.OAuthHandler(CONSUMER_KEY,CONSUMER_SECRET)
    auth=set_access_token(ACCESS_KEY,ACCESS_SECRET)
    api=tweepy.API(auth)
    tweet_data = []
    for page in tweepy.Cursor(api.user_timeline, screen_name=handle, count=200, tweet_mode='extended').pages():
        for tweet in page:
            tweet_data.append(tweet.full_text)
    return tweet_data

## Not sure why the following lines are needed
#    twits=[]
#    tweet_data=[tweet.text for tweet in count_tweets]

#    for t in count_tweets:
#        twits.append(t)

if __name__== '__main__':
    print(data_set('my twitter name'))

我在代码中使用api.user_timeline而不是api.home_timeline,因为您说过您正试图从朋友的时间轴中获取推文。如果api.home_timeline满足您的用例,您可以替换它。