質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

2302閲覧

IMPORTXML関数にXPathを入れても「データが空です」とでてしまう

kani0130

総合スコア13

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

2クリップ

投稿2018/10/31 11:17

編集2018/10/31 11:43

前提・実現したいこと

プログラミングをしたことがないのですが、
インスタグラムのデータをスプレッドシートのIMPORTXMLで集計してみたいと思っています。
インスタで特定のハッシュタグで検索し、それででてきた検索結果のURLを表示させるようにしたいです。
しかしIMPORTXML関数にXPathを入力しても欲しいデータが返ってこないのです…。

実際のコード↓
<a href="/p/Bpih9b5n-Na/?tagged=ソフィーナip">
https://www.instagram.com/にコードの「/p/Bpih9b5n-Na/?tagged=ソフィーナip」をつなげると
実際のURLとして有効になると思うのでそのように表示したいです。)

コードのXPath↓
//*[@id="react-root"]/section/main/article/div[2]/div/div[2]/div[1]/a

発生している問題・エラーメッセージ

インポートしたデータは空です。

該当のソースコード

グーグルのスプレッドシートでIMPORTXMLという関数を使っているので、下記はその式です。
入力例は「=IMPORTXML(該当のURL,"X Path")」です。

=IMPORTXML(https://www.instagram.com/explore/tags/%E3%82%BD%E3%83%95%E3%82%A3%E3%83%BC%E3%83%8Aip/,"//*[@id='react-root']/section/main/article/div[2]/div/div[2]/div[1]/a")

試したこと

グーグルクロームで取得したXpathに対して、”(ダブル)を’(シングル)に変えたり、似たような事例を検索して試してみたりしました。

補足情報(FW/ツールのバージョンなど)

該当検索結果のURL
https://www.instagram.com/explore/tags/%E3%82%BD%E3%83%95%E3%82%A3%E3%83%BC%E3%83%8Aip/

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2018/10/31 11:28

タグは「Java」であっているのでしょうか。関連性が提示内容だけではわかりませんでした。「コード」は実際に現在質問者さんが組まれているコードを、マークダウンのcode機能を利用して提示してください。
yukkuri

2018/10/31 11:39

これはJavaですか?見た限りJavaScriptかHTMLかそのような類に見えますが。
papinianus

2018/10/31 14:33

多分タグは、「Google スプレッドシート」が適切です。そういうタグがあったはず。javascriptですらないです。
guest

回答2

0

ベストアンサー

プログラミングをしたことがない方向けの回答

無理です。あきらめてください

将来同じ情報を求めてこの質問を見た方への参考資料

  • IMPORTXML

大前提として、XMLをIMPORTする機能なので、第一引数にあるアドレスから取得できるデータがXMLとして妥当であって、かつその中で取得したいものがXMLである必要があります

  • 第一引数にあるアドレスから取得できるデータ、ということ

これまでのいくつかの質問や個人的な経験から、当該アドレスが200で返したhttpのresponse bodyしか取得できない(ここはGoogleさんに詳細仕様を開示してほしい)。つまりリダイレクトは対応不可。jsのエンジンは動かないので当然ajaxは無理。jsが動かないのでDOM構造をかえているようなものも対応できない(ただし、最初のresponseに含まれているなら、ソースを自分で解読してXPATHを解釈できれば取れる可能性はある)

  • 補足

どうもXPATHの対応が完全でないように思う。個人的には、任意のXPATHには対応していない懸念を持っています。当然ながらサイトの作りがかわると以前にできていた(過去に動いたサンプルがある)ものが動かなくなることはあり得ます

  • どうやって諦めるか

まずはブラウザでページのソースを見ます。ソースを表示する機能で、XML(HTML)のタグを持っていない(youtube)、情報量がブラウザでみたときと違う(instagram、この質問)といったときはもう無理
次に、XPATHを"//"とします。これで全てのノードが取得できるはずなので、これで取れてくるのかによって、非ブラウザによるアクセスが遮断されている可能性などを識別できます
さらに"//
"にしたときに、どこかのセルに欲しい情報が入っていた、のであれば、そのXMLタグは取れていることになるので、chromeのCopy Xpathを過信せずに、細かく調整すれば取れる可能性があります(ただし、前記補足にも関係しますが、あるdivまでは取れているのにその次のhtmlタグが取れなかった例を知っているので、取り出した後に、googleスプレッドシートの関数などで加工する必要がある場合もあります)

  • 今回はどうか

=IMPORTXML("https://www.instagram.com/explore/tags/%E3%82%BD%E3%83%95%E3%82%A3%E3%83%BC%E3%83%8Aip/","//title")なら"#ソフィーナip hashtag on Instagram • Photos and Videos"は取れます。たしかインスタはapiがあるはずで、IMPORTXMLはインスタを取得する方法としては適切でないのでしょう。蛇足だが、プログラマはidがreact-rootな時点で諦めような

投稿2018/10/31 15:02

papinianus

総合スコア12705

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

これはJavaですか?見た限りJavaScriptかHTMLかそのような類に見えますが。

投稿2018/10/31 11:33

yukkuri

総合スコア624

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2018/10/31 11:34

回答欄と質問への追記・修正依頼のコメント欄間違えてません?
yukkuri

2018/10/31 11:35

すいません、書き間違いです。移しておきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問