0

我正在尝试从新的 Google Play 市场下载一个页面,但似乎得到了奇怪的结果。我使用 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 知识不足以理解下载的确切内容。我把下载的源代码放在这里给感兴趣的人。它比任何 Google Play 应用程序页面所需的页面小 10 倍。

我的问题是,如何获取原始应用页面的来源?

4

2 回答 2

1

你从你的方法中得到的可能是正确的。Google 喜欢使用 javascript 加载资源以提高性能,并且所有 Javascript 都是经过编译的,因此它完全不可读。

因此,当您下载页面时,您可能会收到非常少量的 HTML,并且您提到更改日志等不存在?这意味着它们正在使用某种客户端运行时加载,很可能是 javascript。

要下载这个,你需要一个浏览器或库来执行 Javascript、CSS 和布局 HTML。

也许检查像占碑这样的图书馆?我知道 QT 有一个使用 Webkit 的 QWebView 组件,但我不知道这是否会运行 Javascript。

希望至少可以为您指明正确的方向。

于 2012-05-18T14:29:50.617 回答
0

尝试在您的浏览器中安装例如 Firebug 插件或任何其他允许您在访问页面时监控 http 流量的工具。然后您可以查看加载实际数据的调用。您可能可以直接获取这些 URL。

于 2012-08-12T07:32:18.900 回答