2017-11-27 7 views
1

として外部のウェブサイトからHTMLデータ値をこすり。私は、ここから通貨の価値を取り除きたい:https://www.dailyfx.com/forex-ratesし、練習として.txtファイルにそれらを保存します。Node.jsのは、最初に、私はコミュニティが:)</p> <p>私は最近のNode.jsを学び始めたのStackOverflowに挨拶したい、それが私の最初の質問です

私はcheerio.jsフレームワークを見つけて試しました。そのページから

HTMLコード:

<tbody> 
    <tr id="EURUSD" data-market-id="EURUSD" class="rates-now"> 
    <td> 
     <span title="EURUSD"> 
     <a href="eur-usd">EURUSD</a> 
     </span> 
    </td> 
    <td class="text-right rates-row-td"> 
     <span data-symbol="EURUSD" data-type="bid" data-value="1.19016" data-changescale="-1"></span> 
    </td> 
    <td class="text-right rates-row-td"> 
     <span data-symbol="EURUSD" data-type="ask" data-value="1.21016" data-changescale="-1"></span> 
    </td> 
    <td class="text-right rates-row-td"> 
     <span id="EURUSD-spread">0.60</span> 
    </td> 
    <td class="text-right rates-row-td"> 
     <span class="calendar-toggle-btn"></span> 
    </td> 
</tbody> 

私のNode.jsコード:ように

Status code: 200 
Title: EURUSD 
Value= undefined 
Title: USDJPY 
Value= undefined 
Title: AUDUSD 
Value= undefined 
Title: GBPUSD 
Value= undefined 
Title: USDCAD 
Value= undefined 

と:

var request = require('request'); 
var cheerio = require('cheerio'); 
var fs = require('fs'); 

request("https://www.dailyfx.com/forex-rates", function(error, response, body) { 
    if(error) { 
    console.log("Error: " + error); 
    } 
    console.log("Status code: " + response.statusCode); 

    var $ = cheerio.load(body); 

    $('tr.rates-row').each(function(index) { 
    var title = $(this).attr('data-market-id'); 
    console.log("Title: " + title); 
    var value = $(this).find('td.rates-row-td > span').attr('data-value'); 
    console.log(" Value= " + value); 
    fs.appendFileSync('stara.txt', value + '\n'); 
    }); 
}); 

出力は次のようです。私はなぜ属性値の値が未定義であるのか分からない。

+0

など、人形遣い、jSDomのようなものを使用する必要がphantomjsなり、次のいずれかhttps://content.dailyfx.com/getData?contenttype=minicalendar&importance=HIGH 、MEDIUM&maxresults = 6&language = en – InferOn

+0

もっと説明してください。 – kubeq24

+0

私は値が非同期的に取得されていると考えていますので、値を紛失する可能性はありますが、開発者ツールのネットワークタブを調べると、ajax呼び出しを見ることができます。すべて最高の – InferOn

答えて

0

コンテンツはjavascriptで動的に挿入されています。 CheerioはHTMLだけを読むことができるので、常に未定義です。

あなたは単純にJSON形式でデータを読み込むことができ

+0

私はそれをショット、感謝を与えるよ! – kubeq24

関連する問題