2014-08-29 32 views
1

我正在試驗一些機器學習技術。 在這種情況下PSO-KMean用於聚類。如何在單個請求中查詢Stack Exchange站點上所有標記的計數

我想我可能會對其進行測試,通過按堆棧交易所API高達 搶的標籤列表以及每個標籤的數量, 然後再轉換成表示每個站點位置彩車的數組中的「標籤空間「

我使用Py-Stack-Exchange

from stackauth import StackAuth 
import stackexchange 

site_data = {} 
n_sites= 20 
for site_auth in StackAuth().sites()[3:n_sites+3]: #Skip big 3 
    site=site_auth.get_site() 
    site_tags = {} 
    for tag in site.all_tags(): 
     site_tags[(tag.name)]=tag.count 
    site_data[site.domain] = site_tags 

現在這個必須有gone over the 10,000 requests limit後,我用了幾次混亂,因爲周圍 我StackExchangeError: 502 [throttle_violation]: too many requests from this IP, more requests available in 81719 seconds

所以我想它正在請求網站上的每個標籤以獲得它的數量。 這對任何人都沒有好處, 對我來說比較慢,而且在堆棧交換基礎架構上的工作也更多。 我覺得必須有一種方法可以獲得每個站點1次訪問中的信息, 但是我不熟悉API來解決這個問題。

+0

代碼中的#skip big 3是什麼意思? – 2014-10-01 19:50:11

+0

這意味着跳過超級用戶,堆棧溢出和服務器故障。他們(特別是Stackoverflow)只是很大。這個代碼實際上可能會跳過Meta SE,SO和SU,但不是SF,但是我確定,cos Meta是巨大的,比SF更大,我猜想 – 2014-10-01 22:35:35

+0

所以你想出了一個解決方案嗎?如果是這樣,請發佈。這對其他人會有用! – 2014-10-01 23:12:59

回答

0

您不能只通過一個API調用拉出所有標籤。單獨堆棧溢出時,在此答案中有38,484標籤。每頁100個標籤,這意味着您必須撥打385個不同的電話。

此問題的API的替代方案可能是利用Data Explorer。如果沒有更多的細節,我可以在一個非常simple query,拉堆棧溢出所有標籤信息指向你:

select * from tags 

此信息每週更新的基礎上,所以它不是實時數據。

最後,您可以使用data dump進行離線分析。這是Stack Exchange根據季度(大約)提供的大型存檔。幸運的是,最新的轉儲是從2014年9月開始的,所以它是相當新的。

+0

如果您想以編程方式拉取標籤,即執行'select * from tags',那麼您將如何實現?這將有助於SO精煉他的代碼..我猜用戶無法訪問堆棧溢出數據庫 – 2014-10-01 19:52:41

+0

你不知道。利用數據轉儲並將信息存儲在您自己的數據庫中。 – Andy 2014-10-01 19:56:37

+0

我想這涉及到下載zip文件並對其進行分析。但我通常更喜歡直接的API調用來提取信息並堅持到最後。可能這是不可能的,因爲SO提到他用太多的電話打StackExchange服務器... – 2014-10-01 20:00:21

相關問題