2011-04-15 50 views
1

我一直在試圖獲取一些公開(解鎖)twitter用戶的所有推文。 我使用REST API: http://api.twitter.com/1/statuses/user_timeline.json?screen_name=andy_murray&count=200&page=1'獲取Twitter用戶的所有推文,限速問題

雖然渡過了16個頁面(頁面PARAM)允許,從而獲得3200個鳴叫這是確定。 但是我發現這種調用的速率限制是每小時150(!!!),這意味着每小時(每個16頁)少於10個用戶查詢。 (350如果你認證,允許的話仍然很低)

關於如何解決這個問題的任何想法?流\搜索API似乎並不合適(?),並且有一些似乎有這些數據的Web服務。

感謝

回答

2

您可以排隊請求,讓他們作爲速率限制允許也可以使身份驗證請求,作爲多個用戶。每個用戶每小時有350個請求。

+0

如果我排隊的結果它會帶我永遠。 (每小時約10個用戶,每天240個......)。我認爲這些請求是按用戶進行身份驗證的,但速率限制仍然適用於IP。 「因此,在同一IP上的多個客戶端之間切換不會提供速率限制優勢」http://dev.twitter.com/pages/rate_limiting_faq#measurement – normalppl 2011-04-16 08:55:46

+2

經過身份驗證的限制是每個用戶的,因此多個客戶端共享同一個350 /小時的單個用戶,但單個客戶端上的多個用戶都有不同的費率限制。 `Twitter客戶端中的多個用戶帳戶每個都有自己的用戶速率限制,但共享未經身份驗證的請求` – abraham 2011-04-17 04:48:17

0

Search API似乎適合您的需求,因爲您可以在屏幕上搜索名稱。搜索API速率限制高於REST API速率限制。

2

一種方法是使用streaming API(或者更具體的user streams,如果它更適合您的應用程序)開始收集您的目標用戶發出的所有推文,而無需打擾傳統速率限制,然後使用REST API來回填這些用戶的歷史推文。當然,如果你每天只有350次驗證請求,但是如果你全天候運行你的收割機,那麼每天仍然有1,680,000條推文(每小時350個請求/每小時24小時* 200個推文/請求)。例如,如果您決定每天爲每個用戶提供1000條推文(5次API調用@每次調用200條推文),那麼您可以每天運行1680條用戶時間軸(每小時70條時間軸)。然後,在第二天,通過使用您的statuses/user_timeline請求中的max_id參數,使用每位用戶的最舊狀態ID收集下一個1000條推文,開始您離開的位置。

流媒體API將使您瞭解目標用戶發佈的任何新狀態,並且在大約四天內REST API調用將會非常快速地開始運行到Twitter對這些用戶的歷史推文的讀取限制。之後,您可以添加額外的用戶,通過將其添加到follow列表中,從而獲得流式傳輸終端前進的提示,並且您可以停止爲最大用戶提取歷史推文,並開始獲取新的目標組的推文。

相關問題