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

Posted

技术标签:

【中文标题】Tweepy 错误:请求超出帐户当前的包请求限制【英文标题】:Tweepy Error: Request exceeds account’s current package request limits 【发布时间】:2021-05-31 16:11:11 【问题描述】:

我正在使用 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】:

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

对于 API v2 中的完整存档/所有推文端点,您需要 Academic Track 中的项目和该项目中的应用程序。您需要将代码指向 /2/tweets/search/all 端点。如果您使用的是 Python,则有 sample code in the TwitterDev repo。这使用 requests 库,而不是使用像 Tweepy 这样的完整 API 库。

【讨论】:

谢谢,我使用了示例代码并对其进行了修改以进行搜索,但是当我运行它时,我得到了“ImportError: No module named requests”,我查看了它并做了“easy_install twitter”人们推荐,但这也没有解决它。我想我正在使用 Python 3。 查看自述文件,需要pip install requestspip install requests-oauthlib

以上是关于Tweepy 错误:请求超出帐户当前的包请求限制的主要内容,如果未能解决你的问题,请参考以下文章

服务限流的作用及实现

使用 Tweepy 的 Twitter 错误代码 429

EC2 请求限制超出问题

“由于可能的配置错误,请求超出了 10 个内部重定向的限制”,而 WordPress 在反向代理后面

如何避免使用 tweepy Twitter API 的速率限制?

从Salesforce查看文件时,Google Drive API消息“超出未经身份验证的使用限制。”