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)来获得物品的优惠价格。
谢谢你的答案,但我不明白他怎么能对所有项目得到平均,它只显示最近完成的,它需要一个较长的方式通过+在JSON我找不到让所有项目价格)? –
是的,他每隔3秒检查一次这个端点。所以他一直在24/7全天候检查。经过一段时间(我相信超过1个月),他收集了太多的数据,他可以给出准确的价格。请参阅[API文档](http://csgo.steamlytics.xyz/api)。在收集完所有这些数据之后,他正在对数据集运行算法以获得准确的价格。 – igeligel
嘿,但我的网址不怎么好?它有价格2015-2017(我不相信他开始从一开始就获得所有项目),因为它也是。 –