繁体   English   中英

Twython速率限制问题

[英]Twython Rate Limit Issue

我想知道如何自动化我的程序以每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

你应该使用Twitter的Streaming API

这样您就可以获得近乎实时的搜索Feed。 您可以将这些推文尽可能快地写入文件。

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

你需要使用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')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM