Tweepy 错误:请求超出帐户的当前包请求限制

时间:2021-03-02 05:46:28

标签: python api twitter tweepy tweets

我正在使用 Tweepy API 通过标准学术研究开发者帐户收集包含特定关键字或主题标签的推文。这使我每月可以收集 10,000,000 条推文。我正在尝试使用完整档案搜索一次从一个完整日历日期收集推文。我收到了一个速率限制错误(尽管 wait_on_rate_limit 标志被设置为 true),现在这个请求限制错误。我不完全确定此时为什么或要更改什么?

consumer_key = '***'
consumer_secret = '***'
access_token = '***'
access_token_secret = '***'

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)

api = tweepy.API(auth,wait_on_rate_limit=True)

def get_tweets_withHashTags(query, startdate, enddate, count = 300):
    tweets_hlist= []
    tweets_list= []
    qt=str(query) 
    for page in tweepy.Cursor(api.search_full_archive, label='myLabel', query=qt, fromDate=startdate+'0000',toDate=enddate+'0000',maxResults=100).pages(100):
      count = len(page)
      print( "Count of tweets in each page for  " + str(qt) + " : " +  str(count))
      for value in page:
        hashList = value._json["entities"]["hashtags"]
        flag = 0
        for tag in hashList:
            if qt.lower() in tag["text"].lower():
                flag = 1

        if flag==1:
          tweets_hlist.append(value._json)
        tweets_list.append(value._json)

    print("tweets_hash_"+ query +": " + str(len(tweets_hlist)))
    print("tweets_"+ query +": " + str(len(tweets_list)))
    
    with open("/Users/Victor/Documents/tweetCollection/data/"+startdate +"/" + "query1_hash_" + str(startdate)+ "_" + str(enddate) + "_" +query+'.json', 'w') as outfile:
      json.dump(tweets_hlist, outfile, indent = 2)

    with open("/Users/Victor/Documents/tweetCollection/data/"+startdate +"/"+"query1_Contains_" + str(startdate)+ "_" + str(enddate) + "_" +query+'.json', 'w') as outfile:
      json.dump(tweets_list, outfile, indent = 2)
    return len(tweets_list)

query = ["keyword1","keyword2","keyword3", etc. ]
for value in query:
  get_tweets_withHashTags(value,"20200422","20200423")

1 个答案:

答案 0 :(得分:0)

在撰写此答案时,Tweepy 不支持 Twitter API 的第 2 版(尽管有 Pull Request to add initial support)。 api.search_full_archive 实际上是在使用 v1.1 Premium Full Archive 搜索,该搜索具有较低的请求和推文上限数量限制,因此这就是您看到有关超出包裹的错误的原因。

对于 API v2 中的完整档案/所有推文端点,您需要学术轨道中的一个项目,以及该项目中的一个应用程序。您需要将代码指向 /2/tweets/search/all 端点。如果您使用 Python,则有 sample code in the TwitterDev repo。这使用了请求库,而不是使用像 Tweepy 这样的完整 API 库。

相关问题