[英]Using Node.js to find the value of Bitcoin on a webpage at real time
我正在嘗試制作一個 .js 文件,該文件將不斷更新比特幣的價格(每五分鍾左右)。 我已經嘗試了大量不同的網絡抓取方法,但它們總是以 null 或什么都不輸出。 這是我的最新代碼,有什么想法嗎?
var express = require('express');
var path = require('path');
var request = require('request');
var cheerio = require('cheerio');
var fs = require('fs');
var app = express();
var url = 'https://blockchain.info/charts/';
var port = 9945;
function BTC() {
request(url, function (err, res, body) {
var $ = cheerio.load(body);
var a = $(".market-price");
var b = a.text();
console.log(b);
})
setInterval(BTC, 300000)
}
BTC();
app.listen(port);
console.log('server is running on '+port);
它成功地說明了它在哪個端口上運行,這不是問題。 這個例子(輸出時)只是在每次函數發生時換行。
更新:我更改了從 Wartoshika 獲得的新代碼,它停止工作,但我不知道為什么。 這是:
function BTCPrice() {
request('https://blockchain.info/de/ticker', (error, response, body) => {
const data = JSON.parse(body);
var value = (parseInt(data.USD.buy, 10) + parseInt(data.USD.sell, 10)) / 2;
return value;
});
};
console.log(BTCPrice());
如果我直接從函數內部擁有它 console.log ,它就可以工作,但是當我擁有它時,console.log 函數的輸出它輸出未定義。 有什么想法嗎?
我寧願使用 JSON api 來獲取當前的比特幣值而不是 HTML 解析器。 使用 JSON api,您將獲得一個可被瀏覽器解析的 strait forward 結果集。
結帳匯率 API
網址看起來像https://blockchain.info/de/ticker
工作腳本:
const request = require('request');
function BTC() {
// send a request to blockchain
request('https://blockchain.info/de/ticker', (error, response, body) => {
// parse the json answer and get the current bitcoin value
const data = JSON.parse(body);
value = (parseInt(data.THB.buy, 10) + parseInt(data.THB.sell, 10)) / 2;
console.log(value);
});
}
BTC();
使用該值作為回調:
const request = require('request');
function BTC() {
return new Promise((resolve) => {
// send a request to blockchain
request('https://blockchain.info/de/ticker', (error, response, body) => {
// parse the json answer and get the current bitcoin value
const data = JSON.parse(body);
value = (parseInt(data.THB.buy, 10) + parseInt(data.THB.sell, 10)) / 2;
resolve(value);
});
});
}
BTC().then(val => console.log(val));
正如另一個答案所述,您應該真正使用 API。 您還應該考慮要索取什么類型的價格。 如果您只想要一種匯總來自多個交易所的價格的指數價格,請使用 CoinGecko API 之類的東西。 此外,如果您需要實時數據,則需要基於 websocket 的 API,而不是 REST API。
如果您需要特定交易所的價格,例如您正在為一個或多個交易所構建交易機器人,則需要直接與每個交易所的 websoceket API 進行通信。 為此,我會推薦Coygo API 之類的東西,這是一個 node.js 包,可將您直接連接到每個交易所的實時數據源。 您想要一些不添加中間人的東西,因為這會增加您的數據的延遲。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.