[英]Random sampling tweets with tweepy
我正在嘗試分析帶有#contentmarketing 標簽的推文。 我首先嘗試使用 tweepy 抓取 20,000 條推文,但遇到了速率限制。 所以我想取一個隨機樣本(或幾個隨機樣本)。
我不太熟悉通過 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)
這應該會阻止速率限制生效,只需對您的代碼進行以下更改:
api = tweepy.API(auth, wait_on_rate_limit=True)
我聽說過獲得隨機推文。 但是你可以得到“永遠”的推文,而不是全部,所以這是完全一樣的。
使用公共搜索 API,您可以在 15 分鍾內執行 450 個請求(應用身份驗證)。 所以你可以每 2 秒請求 100 條推文。 這永遠不會結束。
然后將“count”參數更改為 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.