[英]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.