web-dev-qa-db-ja.com

AngularJSサイトからimportxmlを使用して価格を抽出するにはどうすればよいですか?

Google SpreadsheetsのimportXMLを使用して、このWebサイトから価格を抽出する必要があります。

製品はこちらです https://en-sa.wadi.com/Apple-iphone-6s-16-gb-4g-rose-gold-with-facetime-61616.html

問題は、AngularJSを使用しているため、一般的な方法が機能しないことです。

これは私が以前使用していたものですが、もう機能していません。

=REGEXEXTRACT(REGEXREPLACE(ImportXML("https://en-sa.wadi.com/sony-xperia-z3-16-gb-4g-lte-black-dual-sim-355.html", "//div[@class='info-module other-sellers']//p"), "{{ctrl.selectedSupplier.suppliers.length-1}}", ""),"[0-9]+")
1
user1314051

取得するデータがスクリプト内にある場合、xPath //scriptを使用してすべてのスクリプトコンテンツを取得し、結果に参加できます(したがって、ソースで7番目または11番目のスクリプトに依存する必要はありません)。 regexextractを使用して結果を解析します。現在、次の式は2447を返します。

=regexextract(regexextract(join(" ", IMPORTXML("https://en-sa.wadi.com/Apple-iphone-6s-16-gb-4g-rose-gold-with-facetime-61616.html", "//script")), """offerPrice"":\d+"), "\d+")

ここでは、最初の正規表現"""offerPrice"":\d+""offerPrice":2447に一致します(引用符は文字列内で2重になります)。 2番目のregexextractは、番号2447のみを保持します。

上記では、「offerPrice」が必要なものであると想定しています。通常価格を抽出するには、代わりに"""price"":\d+"を使用します。

3
user79865