2012-05-18 107 views
0

我試圖從新的谷歌播放市場下載一個頁面,似乎得到奇怪的結果。我使用url 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; 
} 

結果doen't包含的說明,更改日誌或者任何重要的,但我的HTML知識是不夠的,瞭解究竟是什麼beeing下載。我對任何一個感興趣的人下載了源代碼here。它比所需的Google Play應用頁面小10倍。

我的問題是,我如何獲得原始應用程序頁面的源代碼?

回答

1

你從你的方法中得到的可能是正確的。 Google喜歡使用javascript加載資源以提高性能,並且所有的Javascript都被編譯,因此它無法被讀取。

因此,當您下載頁面時,您可能會收到少量的HTML,並且您提到更改日誌等不存在?這意味着他們正在使用某種客戶端運行時加載,很可能是JavaScript。

要下載這個,你需要一個瀏覽器或庫,可以執行Javascript,CSS和佈局HTML。

也許檢查庫像Jambi?我知道QT有一個使用Webkit的QWebView組件,但我不知道這是否會運行Javascript。

希望至少能讓您朝正確的方向發展。

+0

感謝您的快速回答和「哦,我的上帝,爲什麼?」。 Android Market更簡單得多。 –

+0

嘗試閱讀google.com,它會摧毀你...:D –

0

嘗試安裝例如瀏覽器中的Firebug插件或任何其他工具,可讓您在訪問頁面時監控http流量。然後你可以看到哪些調用來加載實際數據。你可能只需要抓住那些Url。