2017-01-22 105 views
0

的人誰用蒸汽處理可能已經聽說過的網站的那樣:http://csgo.steamlytics.xyz/NodeJS |汽市場分析

對於學習我,雖然我會試着像他們所要做的有些相同的API,但我有一個問題。我已經做了部分,它獲取每個項目名稱,並請求蒸汽市場歷史URL並從那裏獲取數據並將其提交給數據庫。有6844個項目,我爲每個請求設置了2秒的超時時間,所以如果我做了正確的數學計算,則需要大約6個小時才能將所有項目數據提交到數據庫。問題在這裏,有沒有一種可能的方法來加快這個過程?關於steamlytics網站,他們每12小時更新數據,所以我不認爲他們每次更新價格6小時。這裏是我的代碼:

for (var i = 0; i < names.items.length; i++) { 
    setTimeout(function(i) { 
     var name = names.items[i].market_hash_name; 
     scrapeItems(names.items[i].market_hash_name, function(data) { 
      var total = 0; 
      var price = 0; 
      var average = 0; 
      var count = 0; 
      var data = JSON.parse(data); 
      for (var i = 0; i < data.prices.length; i++) { 
       var dataa = { 
        name: name, 
        date: data.prices[i][0], 
        price: data.prices[i][1], 
        sales: data.prices[i][2] 
       }; 
       connection.query('INSERT INTO item_histories SET ?', dataa, function(err) { 
        if (err) { 
         console.log(err); 
        } else{ 
        } 
       }); 
      } 
     }); 
     console.log("Inserted data to DB " + name); 
    }, i * 2000, i); 
} 

回答

0

與做這些請求的問題是,你得到速率限制的真快,如果你做你正在做的請求數量。請求限制是每個IP,並且你有你的解決方案。你需要更多的IP。無論哪種方式都有服務器的API來改變IP,但代理也在工作。

steamlytics的創造者創造了一個包做請求時,在你的代理旋轉。該軟件包被稱爲node-rotating-proxy-manager

否則我知道steamlytics不同地提取市場價格。他正在使用這個持有所有最近完成的市場交易的url。你需要每秒掃描3次,我相信所有的價格都是平均值。對於高於市場限額(約400美元)的物品,您需要使用其他來源(如OPSkins)來獲得物品的優惠價格。

+0

謝謝你的答案,但我不明白他怎麼能對所有項目得到平均,它只顯示最近完成的,它需要一個較長的方式通過+在JSON我找不到讓所有項目價格)? –

+0

是的,他每隔3秒檢查一次這個端點。所以他一直在24/7全天候檢查。經過一段時間(我相信超過1個月),他收集了太多的數據,他可以給出準確的價格。請參閱[API文檔](http://csgo.steamlytics.xyz/api)。在收集完所有這些數據之後,他正在對數據集運行算法以獲得準確的價格。 – igeligel

+0

嘿,但我的網址不怎麼好?它有價格2015-2017(我不相信他開始從一開始就獲得所有項目),因爲它也是。 –