web-dev-qa-db-ja.com

XPathを使用したImportXMLがテーブルのエントリを返さない

GoogleスプレッドシートとIMPORTXMLを使用して、XPath経由でWebサイトから情報を取得します。

サイトはこちら(ここをクリック)

抽出しようとしている特定の情報は、価格/販売(TTM)番号、つまり 2.97

XPathは次のとおりです(Google Chrome ExtensionsXPath HelperおよびXPatherを使用してテストしました。)動作します。):

//div[@id='audit-integrity'][1]/table/tbody/tr[10]/td[2]

Google Financeの機能は次のとおりです。

=IMPORTXML( "https://eresearch.fidelity.com/eresearch/evaluate/fundamentals/keyStatistics.jhtml?stockspage=keyStatistics&symbols=aapl" , "//div[@id='audit-integrity'][1]/table/tbody/tr[10]/td[2]")

関数は機能しません。どうして?

3

<tbody>が原因です。 HTMLソースに<tbody>がありません。 HTML仕様によると、ブラウザはそこにあるべきだと信じているので、(それ自体で、ページ上のJavaScriptとは関係ありません)それをそこに置きます。

/tbodyをパスから削除するだけです:

=IMPORTXML( "https://eresearch.fidelity.com/eresearch/evaluate/fundamentals/keyStatistics.jhtml?stockspage=keyStatistics&symbols=aapl" , "//div[@id='audit-integrity'][1]/table/tr[10]/td[2]")

そして一般的に:XPathが機能しないときは、すべてのセレクターを削除し、式が壊れるまで1つずつ追加してデバッグします...

4
user79865