IMPORTXMLを使用して、テーブルから単一のデータポイントの最新の財務数値を取得しようとしています。
ターゲットページ は、四半期ベースと年間ベースで会社の財務データを3セット表示します。この場合、利用可能な最新の会計期間が何であれ、貸借対照表にリストされている「総負債」の数値のみが必要です。
次のIMPORTXML式を使用しました。
=IMPORTXML("https://www.google.com/finance?q=GOOG&fstype=ii","//td[contains(.,'Total Debt')]")
これにより、2つの隣接するセルにデータラベルのみが垂直に表示されます。
Total Debt
Total Debt
また、Chromeを使用して決定されたXpathクエリでこのIMPORTXML式を使用しました。
=IMPORTXML("https://www.google.com/finance?q=GOOG&fstype=ii","//*[@id='fs-table']/tbody/tr[27]/td[2]")
これにより、4つの値(それぞれ2つの期間の2つの財務諸表からのデータ)が、次のように、隣接するセルに3番目の値が正しい状態で垂直に表示されます。 この答え 別の議論では、「tbody」要素ノードを削除しようとして「#N/A」エラーが発生しました:「インポートされたコンテンツは空です。」
4,207.00
15,826.00
5,208.00
5,220.00
今のところ、テーブルから単一の値しか必要としないため、IMPORTHTMLとINDEXを使用してテーブル全体を解析することを避けようとしています。
このページのXpathクエリを決定して、(1)(2)常に最新のレポート期間の「総負債」の数値を取得するにはどうすればよいですか?
編集:「Total Debt」という同じ名前の要素が2つあるため、次の式を使用して述部ありとなし(角括弧内に1、2、[last]など)を付けて、エラーを返しました空のコンテンツ。
=IMPORTXML("https://www.google.com/finance?q=GOOG&fstype=ii","//*[local-name() = 'Total Debt'][1]")
私の知る限り、IMPORTXMLで使用されるXPathクエリに関しては、XPath 1.0のサポートが完全に実装されておらず、Webページ開発者がプラクティスに従ってWebページの構造を設定できるため、簡単な方法はありません。
Chrome Developer Toolsやブラウザ拡張機能/アドオンなどのツールを使用すると役立つ場合がありますが、XPathサポートの実装方法の違いにより、IMPORTXMLで使用できるXPathクエリが返されない場合があります一方、各ツールの開発者は、WebページがXMLルールに準拠しているかどうかを判断できます。そのため、IMPORTXMLで使用するXPathクエリを見つけるには、ソースWebページの構造を分析し、試みます。
以下のXPathクエリは5,208.00
を返します
1。
//div[@id="balinterimdiv"]//tr[contains(.,'Total Debt')]/td[2]
2。
(//tr[contains(.,'Total Debt')]/td[2])[1]
参照ページには、貸借対照表の2つのビュー、四半期データと年次データが含まれています。両方ともテキストTotal Debt
を含むテーブルセル(tdタグ)を含むため、どちらも同じ構造を持っているように見えます。幸いなことに、各ビューはdivタグ内にあり、それぞれに独自のIDがあります。そのため、1つだけを取得するために、XPathクエリの最初のステップは正しいビューを選択し、2番目のステップは右の表の行(trタグ)および右の表のセルを選択する3番目のステップ(tdタグ)。
別のアプローチは、構成体(xpath_query)[position() = 1]
を使用することです(リファレンスを参照)。
これを行う1つの方法は、ページがレンダリングされることを前提として、プラグインまたはアドオンを使用して生成します。たとえば、Firefoxを使用している場合は、このリンクを使用してください。
https://addons.mozilla.org/en-US/firefox/addon/xpath-checker/
または、これと別のアドオンであるFirebugを使用して