代码之家  ›  专栏  ›  技术社区  ›  Lucas A.

使用节点。js实时在网页上发现比特币的价值

  •  0
  • Lucas A.  · 技术社区  · 8 年前

    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);
    

    它成功地说出了它在哪个端口上运行,这不是问题所在。这个例子(输出时)只在每次函数发生时进行换行。

    我更改了从瓦托希卡获得的新代码,它停止了工作,但我不知道为什么。这是:

    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());
    

    如果我有控制台。直接从函数内部登录,它可以工作,但当我有控制台时。记录其输出的未定义函数的输出。有什么想法吗?

    2 回复  |  直到 8 年前
        1
  •  0
  •   wartoshika    8 年前

    我宁愿使用JSON api来获取当前比特币值,而不是HTML解析器。使用JSON api,您可以获得可由浏览器解析的直接转发结果集。

    结账 Exchange Rates 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));
    
        2
  •  0
  •   ejfrancis    6 年前

    如果您需要特定交易所的价格,例如,您正在为一个或多个交易所构建交易机器人,您;我们需要直接与每个exchange的WebSocket API通信。为此,我推荐一些类似 Coygo API ,一个节点。将您直接连接到每个exchange的实时数据馈送的js包。你想要的东西不会增加中间人,因为这会给你的数据增加延迟。