Google Finance から日本株の証券情報を取得する


GoogleスプレッドシートのGOOGLEFINANCE関数は、Google Finance から「米国株」の証券情報を取得可能です。

しかしながら、現状では「日本株」の証券情報は取得できません。
Google Finance上に日本株の情報自体はあるのに・・・。非常に残念です。

他サイトから日本株の証券情報を取得しても良いのですが、敢えてGoogle Financeから証券情報を取得してみます。
今回は「(8591)オリックス」の現在株価を取得してみます。

IMPORTXML関数

IMPORTXML関数を使用してGoogle Financeから証券情報を取得します。

構文
IMPORTXML(URL, XPath クエリ)

第一引数 - URL

・URL - 検証するページの URL です。プロトコル(http:// など)も含めます。
 ・URL の値は二重引用符で囲むか、適切なテキストを含むセルへの参照にする必要があります。

第一引数のURLには、オリックスの証券情報のURLを指定します。
https://www.google.com/finance/quote/8591:TYO?hl=ja

  • URL末尾に証券コードが埋め込まれています。
  • 日本株の場合、":TYO"の部分は固定のようです。
  • "?hl=ja"で日本語サイトになります。

第二引数 - XPath クエリ

・XPath クエリ - 構造化データで実行する XPath クエリです。
 ・XPath について詳しくは、http://www.w3schools.com/xml/xpath_intro.asp (英語)をご覧ください。

ブラウザから対象URLにアクセスして、第二引数のXPathを確認します。
今回はGoogle ChromeでXPathを確認してみます。

1. 開発ツールを表示する
"F12"キーを押して開発ツール(Chrome DevTools)を開きます。
(ブラウザ画面上の何も無いところを右クリックして"検証"を選択しても大丈夫です。)

2. Webサイトのソースから、現在株価の位置を確認する
現在株価にマウスカーソルを合わせて右クリックして"検証"を選択します。

すると、開発ツール側のWebサイトのソースがハイライトされます。
これが現在株価の位置になります。

3. 現在株価のXPathを確認する
ハイライトされた部分を右クリックして Copy -> Copy XPath の順に選択します。

クリップボードにXPathがコピーされたので、一旦テキストファイル等にXPathを貼り付けてみます。
//*[@id="yDmH0d"]/c-wiz/div/div[4]/div/div/main/div[2]/div[1]/div[1]/c-wiz/div/div[1]/div/div[1]/div/div[1]/div/span/div/div

先頭の//*[@id="yDmH0d"]に含まれるダブルクォーテーションは、IMPORTXML関数に入れる際には文字列として認識させる必要があるため、ダブルクォーテーションを2つ続けて入力します。
//*[@id="yDmH0d"]
    ↓
//*[@id=""yDmH0d""]

【参考】
グーグルスプレッドシートの関数で『ダブルクォーテーション(”)』を文字列として認識させる方法

IMPORTXML関数の引数を整理すると以下の通りになります。

引数
第一引数 - URL "https://www.google.com/finance/quote/8591:TYO?hl=ja"
第二引数 - XPath クエリ "//*[@id=""yDmH0d""]/c-wiz/div/div[4]/div/div/main/div[2]/c-wiz/div/div[1]/div/div[1]/div/div[1]/div/span/div/div"

スプレッドシートにIMPORTXML関数を入力

IMPORTXML関数に引数を指定してスプレッドシートに入力します。
=IMPORTXML("https://www.google.com/finance/quote/8591:TYO?hl=ja","//*[@id=""yDmH0d""]/c-wiz/div/div[4]/div/div/main/div[2]/c-wiz/div/div[1]/div/div[1]/div/div[1]/div/span/div/div")

エラーになりました。
自分なりに調べてみましたが、エラーになる原因は特定できず・・・。
(XPathが深すぎて正しく認識できないのかな?)

エラーの解消方法

XPathを編集してエラーを解消します。
先ほどハイライトされた部分を改めて確認します。

<div class="YMlKec fxKbKc">¥2,448.50</div>

となっているので、第二引数のXPathを//*[@class=""YMlKec fxKbKc""]に置き換えます。
※ダブルクォーテーションを2つ続けることを忘れずに。
=IMPORTXML("https://www.google.com/finance/quote/8591:TYO?hl=ja","//*[@class=""YMlKec fxKbKc""]")

これでGoogle Financeからオリックスの株価を取得できました。

関連記事

以上、最後まで読んでいただき、ありがとうございました。