tweepy的随机采样推文

时间:2018-06-21 19:38:02

标签: python twitter tweepy

我正在尝试分析带有#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)

2 个答案:

答案 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)