2017-12-11 15 views
0

これは私が値25.08を取得するためにIMPORTXMLを使用したい私はXPathのGoogleのシートIMPORTXML

https://sg.finance.yahoo.com/quote/D05.SI

<div class="dot-label Pos(r) Fz(13px) Fw(500) D(ib) Ta(c)"><span>Current</span><!-- react-text: 18 -->&nbsp;<!-- /react-text --><span>25.08</span></div> 

に私IMPORTXMLをしたいのリンクです。

=IMPORTXML("https://sg.finance.yahoo.com/quote/D05.SI","//*[@class='dot-label Pos(r) Fz(13px) Fw(500) D(ib) Ta(c)']//span") 

ですが、常に#NAを返します。正しい構文やリンク、理由などを教えてください。

+0

検索する値はどれですか?動的クラスであるため、 'class'属性はいつでも変更されます。データを取得するために別のスクレイピング手法を使用する必要があります。 – Ben

+0

私は現在の価格を取得する必要があります。別の彫刻技術と方法の名前を教えてもらえますか? –

答えて

0

idを使用すると、属性セレクタはclass属性セレクタを使用するよりも常に安全です。これらはクラスバインディングを使用しているため頻繁に変更されるためです。 idという属性を持つ最も近いDOMを見つけ、現在の価格が削られるまで検索します。

enter image description here

あなたはこのXPathを試してみてください:

=INDEX(IMPORTXML("https://sg.finance.yahoo.com/quote/D05.SI","//div[@id='quote-header-info']/div[last()]/div[1]"),1) 

しかし、時にはレイアウト/ DOM構造が変更を取得、あなたはそれが正しくその値をこすりことを確認するために、XPathをチェックし、更新する必要がありますあなたは欲しかった。

+0

うわー、それは完全に働いたが、私はコードをかなり理解していません。 インデックスを使用する目的を知っていますか? div [last()]は@ id = 'quote-header-info'の最後のdivを取得することです。これらの構文に関するすべてのドキュメントがあるリンクはありますか?最後の()、最初の()?そこに何人いるの? divの場合[1]配列のように機能しましたか? 0ではなく1で始める コードはどのようにスパンクラスに達し、テキストを取得しましたか? –

+0

xpathチュートリアルはhttps://www.w3schools.com/xml/xpath_intro.asp – Ben

+0

で読むことができます。div [last()]の場合、divの最後の子を選択します。[@ id = 'quote-header-info ']。 div [1]の場合は、1で始まり最初の子を意味します。また、与えられたxpathに対していくつかの一致した値が返されます。最初の値は興味があります。 – Ben