处理蒸汽的人可能听说过这样的网站: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);
}
答案 0 :(得分:0)
执行这些请求的问题在于,如果您执行了大量的请求,则速度会受到限制。请求限制是根据IP,您有解决方案。你需要更多的IP。无论哪种方式,都有用于服务器的API来更改IP,但代理也在运行。
steamlytics的创建者在做出请求时创建了一个在代理上轮换的包。该包名为node-rotating-proxy-manager。
否则我知道steamlytics正以不同的方式取得市场价格。他正在使用这个url来保存所有最近完成的市场交易。你需要每秒扫描3次我认为平均得到所有价格。对于超出市场限制(~400 $)的商品,您需要使用其他来源(如OPSkins)来获得物品的优惠价格。