我试图在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!")
答案 0 :(得分:1)
根据Twitter API docs,使用user_timeline
一次返回的最多记录将是3,200。
来自文档:
此方法最多只能返回用户最近推文的3,200条。无论在请求此资源时
include_rts
是否设置为false
,用户的其他状态的原始转发都包含在此总计中。
老实说,我不确定你是如何得到这些额外的19条推文,但这绝对是规范的一部分。