使用Tweepy从指定用户的时间线挖掘所有推文和转推

时间:2017-11-14 16:53:41

标签: python python-3.x tweepy

我试图在WomensMarch的Twitter时间线上发布每一条推文。

我一直在尝试使用Tweepy和Python 3.x,但我似乎无法回收超过3219条推文。有什么方法可以挖掘/每个/推特,因为自创建帐户以来Twitter上的指定用户曾转发过或发推文?

以下是我目前正在使用的代码:

import pandas as pd
import tweepy
from tweepy import OAuthHandler
import time 

consumer_key = "--"
consumer_secret = "--"
access_token = "--"
access_secret = "--"

authHandler = OAuthHandler(consumer_key, consumer_secret)
authHandler.set_access_token(access_token, access_secret)
twitterAPI = tweepy.API(authHandler, wait_on_rate_limit=True, wait_on_rate_limit_notify=True)

womensMarchTwitter = twitterAPI.get_user('womensmarch')
minedTwitterDataFrom_womensMarchTwitter = pd.DataFrame(columns=["Tweet Text", "Tweet Created On"])

def MineTimelineData(idToMine):
    cursor = tweepy.Cursor(twitterAPI.user_timeline, id=idToMine)
    while(tweepy.Cursor(twitterAPI.user_timeline).items() != None):
        try:
            for page in cursor.pages():
                for tweet in page:
                    yield tweet
        except tweepy.RateLimitError:
            print("Rate limit reached! Waiting 15 minutes...")
            time.sleep(60 * 15) #wait 15 minutes (900 seconds)

minedData = MineTimelineData(womensMarchTwitter.id)

numberOfTweetsMined = 0
for tweet in minedData:
    print(tweet.text)
    print("Posted on: ", tweet.created_at)
    minedTwitterDataFrom_womensMarchTwitter.loc[numberOfTweetsMined, "Tweet Text"] = tweet.text
    minedTwitterDataFrom_womensMarchTwitter.loc[numberOfTweetsMined, "Tweet Created On"] = tweet.created_at
    numberOfTweetsMined = numberOfTweetsMined + 1

minedTwitterDataFrom_womensMarchTwitter.to_csv(r"PATH") 
print(numberOfTweetsMined)
print("\n \n \n Finished Mining Tweets!")

1 个答案:

答案 0 :(得分:1)

根据Twitter API docs,使用user_timeline一次返回的最多记录将是3,200。

来自文档:

  

此方法最多只能返回用户最近推文的3,200条。无论在请求此资源时include_rts是否设置为false,用户的其他状态的原始转发都包含在此总计中。

老实说,我不确定你是如何得到这些额外的19条推文,但这绝对是规范的一部分。