使用URLConnetion.getInputStream()获取源代码(amazon.de)

时间:2016-08-29 09:08:57

标签: java urlconnection

当我想获取特定网页的源代码时,我使用以下代码:

URL url = new URL("https://google.de");
URLConnection urlConnect = url.openConnection();
BufferedReader br = new BufferedReader(new InputStreamReader(urlConnect.getInputStream())); //Here is the error with the amazon url
StringBuffer sb = new StringBuffer();
String line, htmlData;
while((line=br.readLine())!=null){
    sb.append(line+"\n");
}
htmlData = sb.toString();

上面的代码没有问题,但是当你的网址被调用时......

URL url = new URL("https://amazon.de");

...那么有时候你可能会遇到IOException错误 - >服务器错误代码503.在我看来,这没有任何意义,因为我可以使用浏览器进入亚马逊网页而没有任何错误。

1 个答案:

答案 0 :(得分:5)

使用https://amazon.de访问curl -v https://amazon.de时,您会在响应中获得 503 301 状态代码(在关注重定向时,从引用的位置https://www.amazon.de/获得 503 。正文包含以下注释:

  

要讨论对亚马逊数据的自动访问,请联系api-services-support@amazon.com。    有关迁移到我们的API的信息,请参阅https://developer.amazonservices.de/ref=rm_5_sv上的Marketplace API,或https://partnernet.amazon.de/gp/advertising/api/detail/main.html/ref=rm_5_ac处的广告用例的产品广告API。

我认为,当您的请求被检测为来自非浏览器上下文(即通过解析用户代理)以暗示您使用API​​而不是直接抓取网站时,Amazon会返回此响应。