NodeJS |汽市场分析

NodeJS |汽市场分析

问题描述:

的人谁用蒸汽处理可能已经听说过的网站的那样: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); 
} 

与做这些请求的问题是,你得到速率限制的真快,如果你做你正在做的请求数量。请求限制是每个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(我不相信他开始从一开始就获得所有项目),因为它也是。 –