0

新しいGooglePlayマーケットからページをダウンロードしようとしていますが、奇妙な結果が得られているようです。私はURLhttps://play.google.com/store/apps/details?id=package.nameと次の方法を使用します:

private static String downloadString(final URL url) throws IOException {
    final HttpsURLConnection conn = (HttpsURLConnection) url
            .openConnection();
    conn.setHostnameVerifier(new HostnameVerifier() {

        @Override
        public boolean verify(final String hostname,
                final SSLSession session) {
            return true;
        }
    });
    conn.setReadTimeout(10000);

    String html;

    try {
        final InputStream is = conn.getInputStream();
        final BufferedInputStream bis = new BufferedInputStream(is);
        final ByteArrayBuffer baf = new ByteArrayBuffer(50);

        int current = 0;
        while ((current = bis.read()) != -1) {
            baf.append((byte) current);
        }

        /* Convert the Bytes read to a String. */
        html = new String(baf.toByteArray());

    } finally {
        conn.disconnect();
    }

    return html;
}

結果には、説明、変更ログ、または重要なものは含まれていませんが、私のhtmlの知識は、ダウンロードされているものを正確に理解するのに十分ではありません。ダウンロードしたソースコードを興味のある方のためにここに載せておきます。これは、GooglePlayアプリのページである目的のページの10分の1です。

私の質問は、元のアプリページのソースを取得するにはどうすればよいですか?

4

2 に答える 2

1

あなたの方法から得たものはおそらく正しかったでしょう。Google はパフォーマンスを向上させるために JavaScript を使用してリソースをロードすることを好みますが、その Javascript はすべてコンパイルされているため、まったく読めません。

ページをダウンロードすると、おそらく非常に少量の HTML が表示され、変更ログなどは存在しないとおっしゃいましたか? これは、ある種のクライアント側ランタイム、おそらく JavaScript を使用してロードされていることを意味します。

これをダウンロードするには、Javascript、CSS、および HTML のレイアウトを実行できるブラウザーまたはライブラリーが必要です。

Jambiなどのライブラリをチェックしてみては?QT には Webkit を使用する QWebView コンポーネントがあることは知っていますが、これが Javascript を実行するかどうかはわかりません。

少なくともあなたを正しい方向に向けてくれることを願っています。

于 2012-05-18T14:29:50.617 に答える
0

たとえば、ブラウザに Firebug プラグインをインストールするか、ページへのアクセス中に http トラフィックを監視できるその他のツールをインストールしてみてください。次に、実際のデータをロードするためにどの呼び出しが行われたかを確認できます。おそらく、代わりにそれらの URL を取得できます。

于 2012-08-12T07:32:18.900 に答える