如何通过bash从网站提取一些信息?

时间:2015-11-22 17:19:50

标签: bash shell

我想从本网站获取BTC值的具体信息:

foxbit.com.br

我只想取BTC的值,但是WGET和CURL不能,因为页面的值不是静态的。

这可能吗?

1 个答案:

答案 0 :(得分:1)

以下是你如何做这些事情:

  1. 加载页面,看到值在页面后加载。这表示它已由单独的ajax请求更新。
  2. 打开Chrome开发者控制台,查看少量请求的xhr资源,查看它来自哪个文档。
  3. 右键单击请求并复制为cURL。
  4. 你会得到一些像这样的怪物:

    curl 'http://www.foxbit.com.br/cdn-cgi/pe/bag2?r\[\]=https%3A%2F%2Fapi.blinktrade.com%2Fapi%2Fv1%2FBRL%2Fticker%3Fcallback%3DjQuery21109214518333319575_1448214593730%26crypto_currency%3DBTC%26_%3D1448214593731' -H 'Accept-Encoding: gzip, deflate, sdch' -H 'PE-Token: 136c4c7c7a1e6a4bea75c61a93655067d5752459-1448214593-1800' -H 'Accept-Language: en-US,en;q=0.8,no;q=0.6,nb;q=0.4' -H 'User-Agent: Mozilla/5.0 (X11; CrOS x86_64) AppleWebKit/530.00 (KHTML, like Gecko) Chrome/45.0.0.0 Safari/530.00' -H 'Accept: */*' -H 'Referer: http://www.foxbit.com.br/' -H 'Cookie: __cfduid=d069fe8cecbd20bd0d09a5c04fbc398601448214586; _gat=1; _ga=GA1.3.1862709458.1448214588' -H 'Connection: keep-alive' --compressed
    

    但是,URL清楚地表明它只是从其他API获取,因此我们解码该URL并获取:

    https://api.blinktrade.com/api/v1/BRL/ticker?callback=jQuery21109214518333319575_1448214593730&crypto_currency=BTC&_=1448214593731
    

    我们可以放弃看起来无关紧要的参数,看看我们现在得到了什么:

    $ curl 'https://api.blinktrade.com/api/v1/BRL/ticker?crypto_currency=BTC'
    {"high": 1272.5, "vol": 50.77552492, "buy": 1238.51, "last": 1244.0, "low": 1238.13, "pair": "BTCBRL", "sell": 1243.99, "vol_brl": 63522.33386051}
    

    很干净的JSON。我们现在可以轻松地使用json工具jq获取命令并选择我们感兴趣的值:

    $ curl -s 'https://api.blinktrade.com/api/v1/BRL/ticker?crypto_currency=BTC' | 
        jq '.last'
    1244