我正在尝试从新的Google Play市场下载页面,但似乎得到了奇怪的结果。我使用网址https://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知识不足以理解下载的确切内容。我把下载的源代码here给任何感兴趣的人。它比任何Google Play应用页面所需的页面小10倍。
我的问题是,如何获取原始应用页面的来源?
答案 0 :(得分:1)
你从你的方法得到的可能是正确的。谷歌喜欢使用javascript来加载资源以提高性能,并且所有Javascript都被编译,所以它完全不可读。
因此,当您下载页面时,您可能会收到非常少量的HTML,并且您提到更改日志等不存在?这意味着他们正在使用某种客户端运行时加载,很可能是javascript。
要下载这个,你需要一个浏览器或库,可以执行Javascript,CSS和布局HTML。
也许像Jambi一样检查图书馆?我知道QT有一个使用Webkit的QWebView组件,但我不知道这是否会运行Javascript。
希望至少指出你正确的方向。
答案 1 :(得分:0)
尝试安装,例如浏览器中的Firebug插件或任何其他工具,可让您在访问页面时监控http流量。然后,您可以看到进行哪些调用以加载实际数据。你可能只是抓住那些网址。