人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

xPathの質問です。googlespreadsheetでImportXMLでこちらのサイト
http://jp.investing.com/currencies/nzd-jpy
から 前日比を取得したいのですが
どのように記述すればよろしいでしょうか?
=ImportXML("http://jp.investing.com/currencies/nzd-jpy","//*[@class='arial_20 greenFont pid-58-pc']")
と記述しても取得できません

●質問者: Izkgkf0CPUsl85gi0dBq
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● a-kuma3
●300ポイント ベストアンサー

以下の式で取得できました。

=ImportXML("http://jp.investing.com/currencies/nzd-jpy","//span[@id='last_last']/../span[2]")


Izkgkf0CPUsl85gi0dBqさんのコメント
ありがとうございまいた。 こういうのを取得するにはどうすればいいのでしょうか?

a-kuma3さんのコメント
「取得」ではなく、「習得」?

a-kuma3さんのコメント
今回のやつは、こんな感じで調べました。 質問の XPath を見ると greenFont って入ってるので、「また、日によって変わる属性か」と予断。 実際のページを見ると文字は緑だし、ブラウザのインスペクタで class 属性を見ると、指定は合ってそう。 Google spreadsheet に貼り付けて、データが取れないのを確認。 ブラウザの「ソースを表示する」で class 属性を確認。 すると、以下のように空白が三つ入っているところがあるのを確認。 >|| <span class="arial_20 redFont pid-58-pc" dir="ltr">-0.15</span> ↑ここ ||< 空白の数も合わせた class 属性の指定をしても、データが取れないのを確認。 ここでちょっと詰まります。 [http://q.hatena.ne.jp/1418183459:title=以前の質問]のように、そもそも ImportXML 関数で取得できない可能性を疑う。 近くにある id="last_last" を指定した ImportXML を描いてみて、データが取れることを確認。 上の階層をたどって行って、適当な id 属性が振られているものがなかったので、id="last_last" からの相対パスで書いてみる。 データが取れることを確認したので、回答へ。 ぼくはプログラムを書く人なので、XML は知ってますし、XPath もある程度知ってます。 XML に見た目をつけたりするのに使う XSL というのがあるんですけれど、これが XPath をバリバリ使います。 それでも、使う機会は限られているので、すべて頭の中に入ってるわけではなく、こういうのを使ってます。 http://aoproj.web.fc2.com/xpath/XPath_cheatsheets_v2.pdf でも、以下の六つがあれば、大抵のことはできます。 - タグの指定 - 属性の指定 - ひとつずつたどる / - 下の階層全てを指す // - 上の階層を指す .. - 何番目を指定する [n] この質問で回答する前だったら、.. は入れてないかも。 後、一連の質問で Google spreadsheet の ImportXML 関数を使ってみて、以下のような経験がありました。 - そもそも、データを取得できないページがある(これは、HTML ≠ XML なので分かりやすい) - XML の構造は HTML DOM ではなく、ソースの文字列を XML として解析しているだけ(table の tbody を書いちゃいけないとか) - XPath の構文全てが使えるわけではないっぽい こんなんで、コメントへの回答になってますかね?

Izkgkf0CPUsl85gi0dBqさんのコメント
はい!勉強になりました!ありがとうございました
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ