前提・実現したいこと
どうやっても取得できないXPathがあったので、取得の方法を知りたく質問しました。
目的:スプレットシートのimportXML関数(XPath)を利用し、データを抽出する
サイト
https://www.julian-fashion.com/en-US/product/120833/etro/beachwear/coulisse_swimshorts
該当のソースコード
抜きたい情報がサイト内のこの部分で
ブランド名 E---
商品名 C--------(略)------- ←今回はココ
値段:
右クリックから取得したXPathは以下となります。
/html/body/div[3]/div[8]/div/div[2]/div/div[2]/span[2]/span[2]
=importXML("https://www.julian-fashion.com/en-US/product/120833/etro/beachwear/coulisse_swimshorts" ,"/html/body/div[3]/div[8]/div/div[2]/div/div[2]/span[2]/span[2]")
発生している問題・エラーメッセージ
結果:Error:インポートしたコンテンツが空です。
試したこと
pathを右から削って検証した所、
/html/body/div[3]/div[8]まで表示出来ました。
過去のログを見た所、このようなコメントがあったので、
>chromeのcopy xpathには対応していない
>/を//に変えれば大体いけますけどね。
ので、スラッシュを増やして入力した所、
/html/body/div[3]/div[8]//div
まで取得出来ました。
ただ、ページのソースコード内に書いてない内容が返されて意味が分かりません。
更に、次に進もうと、
/html/body/div[3]/div[8]//div//div (または//div)
の時点でError:コンテンツが空と出ます。
どういうことなのでしょうか?
補足情報(FW/ツールのバージョンなど)
他の質問を見る限り、動的にコンテンツを生成するとダメというのは分かったのですが、
「動的にコンテンツを取得しているか」が分からない為、質問させていただきました。
このサイトでもなくてもimportXMLは
/html/body/~から始まるXPathが大体機能しない。
というか機能する形は
//*[@id="menu"] みたいな属性?を指定する物。
有識者の方、よろしくお願いいたします。
※Seleniumが楽と多々見るので、これから触ってみたいと思います。
【追記】
CSS セレクタをXPathに変換する(サイト下部)
https://piro.sakura.ne.jp/latest/blosxom/mozilla/xul/2007-09-13_selector-to-xpath.htm
を見つけて変換した所、
/html/body/div[3]/div[8]/div/div[2]/div
が以下になりました。
/descendant::*[local-name() = "/html/body/div/div/div/div/div" or local-name() = "/HTML/BODY/DIV/DIV/DIV/DIV/DIV"][(@3) and (@8) and (@2)]"
そのまま打ち込むと"(ダブルコーテーション)云々でバグったので一旦別のセルに入れて参照した所機能しました。
この状態で参照すると「URLが参照できません」と出ます。
同じ内容をURLを打ち込むと出来るんですが、参照できないらしいですね。
なお、 最後に「/h2」があると内部インポートエラーになりました。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。