Googleスプレッドシート上で為替データをスクレイピングする(Google Apps Script)
Web上で公開されている為替データをGoogleスプレッドシート上でスクレイピングする方法です。もちろんGoogle Apps Scriptを使用します。
GoogleスプレッドシートでGoogle Apps Scriptを使う方法は以下の記事を参照ください。
[ad#top-1]
スクレイピングするWebサイト
今回スクレイピングするWebサイトはYahoo!ファイナンスのページです。そこからUSDJPYのBid値(赤い○のところ)をGETしたいと思います。
まず最初にページのソースを解析する必要があります。
以下の通り、赤□で囲ったところがスクレイピングする箇所です。
ddという謎のタグで括られていました。しかも一部の文字を大きくするためのspanタグが間に入っています。
<dd id="USDJPY_detail_bid">112.<span class="large">54</span>9</dd>
スクレイピングの流れを解説
以下がスクレイピングの流れです。
- Webページのソースを取得する。
- <dd id=”USDJPY_detail_bid”>タグの位置を探す。
- ソースの文字列の先頭〜2のタグ位置までを削除。
- </dd>タグの位置を探す。
- ソースの文字列の2のタグ位置以降を削除。
- <span class=”large”>を削除
- </span>を削除
- スプレッドシートのセルに表示
ソースコード
以下がソースコードです。1〜8の解説をコメントで入れています。
function getUSDJPY() { //1. Webページのソースを取得する。 var response = UrlFetchApp.fetch("https://info.finance.yahoo.co.jp/fx/detail/?code=USDJPY=FX"); var html = response.getContentText(); //2. <dd id="USDJPY_detail_bid">タグの位置を探す。 var tag = 'USDJPY_detail_bid">'; var index = html.indexOf(tag); usdjpy = ''; if (index !== -1) { //3. ソースの文字列の先頭〜2のタグ位置までを削除。 var html = html.substring(index + tag.length); var index = html.indexOf('</dd>'); if (index !== -1) { //4. </dd>タグの位置を探す。 html = html.substring(0, index); //6. <span class="large">を削除 html = html.replace('<span class="large">','') //7. </span>を削除 usdjpy = html.replace('</span>','') } } //8. スプレッドシートのセルに表示 var mySheet = SpreadsheetApp.getActiveSheet(); mySheet.getRange("A1").setValue(usdjpy); }
実行
実行すると以下の通りUSDJPYデータをGETできました。
[ad#ad-1]
スポンサーリンク