使用 tweepy 随机抽样推文

Random sampling tweets with tweepy

我正在尝试分析带有#contentmarketing 标签的推文。我首先尝试使用 tweepy 抓取 20,000 条推文,但 运行 进入了速率限制。所以我想取一个 运行dom 样本(或几个 运行dom 样本)。

我不太熟悉通过 API 调用进行的 运行dom 采样。如果我有一个已经包含数据的数组,我会从该数组中获取 运行dom 索引而不进行替换。但是,我不认为我可以在没有速率限制的情况下首先创建该数组。

谁能告诉我如何访问 运行dom 推文(或来自 API 的 运行dom 数据)?

作为参考,这是让我陷入速率限制炼狱的代码:

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)

我听说过获取随机推文。但是你可以获得“永远”的推文,而不是所有推文,所以这是完全一样的。

通过 public 搜索 API,您可以在 15 分钟内完成 450 个请求(应用程序授权)。所以你可以每 2 秒请求 100 条推文。这永远不会结束。

然后将“计数”参数更改为 100,并添加一个 time.sleep(2) :

import 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

这应该会阻止速率限制生效,只需对您的代码进行以下更改:

api = tweepy.API(auth, wait_on_rate_limit=True)