質問: googleplayの以下のサイトのhtmlをpythonで取得したところ、アプリのランキングが60位までしかのっていないものでした。 でソースコードを表示すると同じく60位までしか表示されません。 調べたところ、Javascriptか何かでレンダリングされているとのことだったのですが、どのようにしたら60以降のアプリの情報ものったhtmlが取得できるか知りたいです。 htmlを取得したい理由は個々のアプリの詳細ページへのリンクを取得したいからです。 個々のアプリの詳細ページのリンクさえ取得できれば、手段は問いません。 seleniumなどを利用することも考えましたが、ド素人なのでうまい対策が分かりませんでした。 回答の程、よろしくお願い致します。
回答: 例えば、このようなURLでアクセスすると 60位から90位が取得出来ます。 こういったリクエストのパラメータを探すには、Webブラウザのデベロッパーツールなどで該当ページの挙動を観察すればよいです。 しかし、これからは多くのWebページが「Webアプリケーション」化していくので、難易度は上っていくでしょう。 やはり、seleniumやPhantomJSなどのようにブラウザをまるごと内蔵(操作)しているクライアントでクロールするのが楽だと思います。 追記: > > ソースコードのどこをみればよいか > > > ですが、Webアプリケーションのソースをただ読んで追っていくのは普通の人には厳しいと思います。既にそういう時代です。 挙動を観察するのが基本かと思います。 下にスクロールすると続きが読み込まれる「無限スクロール」の場合、観察するのは - スクロールイベント周辺 - ネットワークのリクエスト のどちらかです。 このページに関していうと、下までスクロールした際にXHR(XMLHttpRequests)による `https://play.google.com/store/apps/collection/topselling_free?hl=ja&authuser=0` に対するPOST要求が観察出来ます。 POSTデータはこんな感じです。 ``` start=60 num=60 numChildren=0 cctcss=square-cover cllayout=NORMAL ipf=1 xhr=1 token= ... hl=ja ``` この中から必要な物を使う事になります。今回はstartとnumだけでよかったです。試してみるとGETも受け付けたので、上記URLが作れたわけです。 観察にはFirefoxの開発ツールを使いました。