【问题标题】:Twython Rate Limit IssueTwython 速率限制问题
【发布时间】:2015-04-21 04:32:34
【问题描述】:

我想知道如何自动化我的程序以每 15 分钟 180 个请求的最大速率获取推文,这相当于每个请求的最大计数为 100,总计 18,000 条推文。我正在为学校的独立案例研究创建这个程序。

我希望我的程序避免受到速率限制并最终被终止。所以,我想要它做的是不断地使用每 15 分钟的最大请求数,并且能够让它运行 24 小时而无需用户交互来检索所有可能的推文进行分析。

这是我的代码。它获取查询推文并将其放入文本文件中,但最终会受到速率限制。非常感谢您的帮助

import logging
import time
import csv
import twython
import json

app_key = ""
app_secret = ""
oauth_token = ""
oauth_token_secret = ""

twitter = twython.Twython(app_key, app_secret, oauth_token, oauth_token_secret)

tweets = []
MAX_ATTEMPTS = 1000000
# Max Number of tweets per 15 minutes
COUNT_OF_TWEETS_TO_BE_FETCHED = 18000 

for i in range(0,MAX_ATTEMPTS):

    if(COUNT_OF_TWEETS_TO_BE_FETCHED < len(tweets)):
    break

    if(0 == i):
        results = twitter.search(q="$AAPL",count='100',lang='en',)

    else:
        results = twitter.search(q="$AAPL",include_entities='true',max_id=next_max_id)

    for result in results['statuses']:
        print result

        with open('tweets.txt', 'a') as outfile:
             json.dump(result, outfile, sort_keys = True, indent = 4)

    try:
        next_results_url_params = results['search_metadata']['next_results']
        next_max_id = next_results_url_params.split('max_id=')[1].split('&')[0]
    except:

        break

【问题讨论】:

    标签: python api twitter tweets twython


    【解决方案1】:

    您应该使用Twitter's Streaming API

    这将使您能够接收近乎实时的搜索供稿。您可以将这些推文写入文件的速度与它们输入的速度一样快。

    使用track parameter,您将只能收到您感兴趣的特定推文。

    您需要使用Twython Streamer - 您的代码将如下所示:

    from twython import TwythonStreamer
    
    class MyStreamer(TwythonStreamer):
        def on_success(self, data):
            if 'text' in data:
                print data['text'].encode('utf-8')
    
        def on_error(self, status_code, data):
            print status_code
    
    stream = MyStreamer(APP_KEY, APP_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET)
    stream.statuses.filter(track='$AAPL')
    

    【讨论】:

    • 感谢您的代码。我已经编程了一个流光。我想要做的是返回 Twitter REST API 允许的 7-9 天并获取提及查询的推文,或者在本例中为 $AAPL
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-16
    • 1970-01-01
    • 1970-01-01
    • 2012-08-24
    • 2014-12-15
    • 2012-10-26
    • 1970-01-01
    相关资源
    最近更新 更多