簡體   English   中英

tweepy 隨機抽樣推文

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM