2017-01-21 37 views
0

我有代码块读取URL页面内容的工作,这个代码工作好了很多页,但对于一些页面,如下面的链接没有作用:url.openStream()DOS不是某些网页

http://www.sciencedirect.com/science/article/pii/S1351421012701725?np=y

public static String getDataFromWebPage(String url) { 
    try { 
     URL urlpage = new URL(url); 
     InputStream is = urlpage.openStream(); 
     BufferedReader br = new BufferedReader(new InputStreamReader(is)); 
     String line = ""; 
     while ((line = br.readLine()) != null) { 
      System.out.println(line); 
     } 
     br.close(); 
     is.close(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
     return ""; 
    } 
} 


public static void main(String[] args) { 
    System.out.println("*******************************"); 
    System.out.println("*******************************"); 
    System.out.println(getDataFromWebPage("http://www.sciencedirect.com/science/article/pii/S1351421012701725?np=y")); 

    System.out.println("*******************************"); 
    System.out.println("*******************************"); 

} 

它需要很多时间,但它不会在输出中得到任何结果(或任何异常)。

有没有可能服务器有一些算法没有从机器人的响应请求?

如何解决这个问题?

+0

作为一个方面说明,你应该刷新你的缓冲区,因为关闭并不总是执行完全刷新。我已经这么几次了。更好的是,使用资源块 – gwnp

回答

1

您应该使用httpclient istead。你会在这里找到一个很好的例子:http://www.mkyong.com/java/how-to-send-http-request-getpost-in-java/

+0

其工作良好。 – user3600935

+0

亲爱的朋友,如果您尝试使用此链接的代码,我将非常感激:http://www.sciencedirect.com/science/article/pii/S0278584699000251,有没有任何安全协议来阻止机器人访问? – user3600935

+0

我将测试该网站,但您的解决方案应该处理状态301(http重定向)和cookie。网站返回301和一个cookie。重定向的URL会检查您是否获取了Cookie。如果cookie丢失,你被认为是一个糟糕的机器人。 – Skywalker