我正在嘗試獲取以下頁面的源代碼:http://www.amazon.com/gp/offer-listing/082470732X/ref=dp_olp_0?ie=UTF8&redirect=true&condition=all (請注意,如果您點擊鏈接,亞馬遜會將您帶到另一頁面。我有興趣在閱讀請複製鏈接並將其粘貼到瀏覽器的空白標籤。謝謝!)使用Java獲取以下頁面的源代碼使用Java
通常使用java.net API,我可以獲得大多數URL的源代碼,幾乎沒有問題但是,對於上述鏈接,我什麼也得不到。原來,由連接所產生的輸入流由gzip的編碼,所以我嘗試了以下內容:
URL url = new URL(urlString);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
InputStream is = urlConnection.getInputStream();
HttpURLConnection.setFollowRedirects(true);
urlConnection.setRequestProperty("Accept-Encoding", "gzip, deflate");
String encoding = urlConnection.getContentEncoding();
if (encoding != null && encoding.equalsIgnoreCase("gzip")) {
is = new GZIPInputStream(is);
} else if (encoding != null && encoding.equalsIgnoreCase("deflate")) {
is = new InflaterInputStream((is), new Inflater(true));
}
然而,這一次,我碰到下面的錯誤確定性:
java.io.EOFException
at java.util.zip.GZIPInputStream.readUByte(GZIPInputStream.java:249)
at java.util.zip.GZIPInputStream.readUShort(GZIPInputStream.java:239)
at java.util.zip.GZIPInputStream.readHeader(GZIPInputStream.java:142)
at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:58)
at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:67)
at domain.logic.ItemScraper.loadURL(ItemScraper.java:405)
at domain.logic.ItemScraper.main(ItemScraper.java:510)
任何人能看到我的錯誤?是否有另一種方式來閱讀這個特定的頁面?有人可以解釋爲什麼我的瀏覽器(Firefox)可以讀取它,但是我無法使用Java讀取源代碼?
在此先感謝,最好的問候,
我可以使用WebDeveloper插件在Firefox中使用VIEW GENERATED SOURCE查看它。似乎很難用Java來做到這一點誠實 – MJB 2011-04-25 00:59:47
「is」的設置在哪裏? ..傳入GZIPInputStream的人 – MeBigFatGuy 2011-04-25 01:02:24
請在你創建'is'的地方發帖。 – 2011-04-25 01:07:41