我正在尝试分析带有#contentmarketing标签的推文。我首先尝试用tweepy抓取20,000条tweet,但是遇到了速率限制。所以我想取一个随机样本(或几个随机样本)。
我不太熟悉通过API调用进行随机抽样。如果我有一个已经包含数据的数组,那么我将从该数组中获取随机索引而不进行替换。但是,我认为如果没有速率限制,我就无法创建该数组。
有人能启发我如何访问随机推文(或总体上来自API的随机数据)吗?
作为参考,这是让我进入限速炼狱的代码:
import tweepy
from tweepy import OAuthHandler
consumerKey = 'my-key'
consumerSecret = 'my-key'
accessToken = 'my-key'
accessSecret = 'my-key'
auth = OAuthHandler(consumerKey, consumerSecret)
auth.set_access_token(accessToken, accessSecret)
api = tweepy.API(auth)
tweets = []
for tweet in tweepy.Cursor(api.search, q='#contentmarketing', count=20000,
lang='en', since='2017-06-20').items():
tweets.append(tweet)
with open('content-tweets.json', 'w') as f:
json.dump(tweets, f, sort_keys=True, indent=4)
答案 0 :(得分:1)
我听说过随机发推文。但是您可能会收到“永远”的推文,而并非全部都得到,因此这是完全相同的。
使用公共搜索API,您可以在15分钟内执行450个请求(应用程序身份验证)。因此,您可以每2秒请求100条推文。这永无止境。
然后将“ count”参数更改为100,并添加一个time.sleep(2):
impor time
for tweet in tweepy.Cursor(api.search, q='#contentmarketing', count=100, lang='en', since='2017-06-20').items():
tweets.append(tweet)
time.sleep(2)
参考:https://developer.twitter.com/en/docs/tweets/search/api-reference/get-search-tweets.html
答案 1 :(得分:1)
这应该阻止速率限制,只需对代码进行以下更改:
api = tweepy.API(auth, wait_on_rate_limit=True)