として外部のウェブサイトから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');
});
});
出力は次のようです。私はなぜ属性値の値が未定義であるのか分からない。
など、人形遣い、jSDomのようなものを使用する必要がphantomjsなり、次のいずれかhttps://content.dailyfx.com/getData?contenttype=minicalendar&importance=HIGH 、MEDIUM&maxresults = 6&language = en – InferOn
もっと説明してください。 – kubeq24
私は値が非同期的に取得されていると考えていますので、値を紛失する可能性はありますが、開発者ツールのネットワークタブを調べると、ajax呼び出しを見ることができます。すべて最高の – InferOn