NodeJS |蒸汽市场分析仪

时间:2017-01-22 15:56:42

标签: node.js steam

处理蒸汽的人可能听说过这样的网站:http://csgo.steamlytics.xyz/

为了学习我虽然我会尝试像他们一样做一些相同的API,但我有一个问题。我已经做了部分,它获取每个项目名称并向Steam市场历史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);
}

1 个答案:

答案 0 :(得分:0)

执行这些请求的问题在于,如果您执行了大量的请求,则速度会受到限制。请求限制是根据IP,您有解决方案。你需要更多的IP。无论哪种方式,都有用于服务器的API来更改IP,但代理也在运行。

steamlytics的创建者在做出请求时创建了一个在代理上轮换的包。该包名为node-rotating-proxy-manager

否则我知道steamlytics正以不同的方式取得市场价格。他正在使用这个url来保存所有最近完成的市场交易。你需要每秒扫描3次我认为平均得到所有价格。对于超出市场限制(~400 $)的商品,您需要使用其他来源(如OPSkins)来获得物品的优惠价格。