2017-01-21 3 views
0

у меня есть блок кодов для чтения содержимого URL страницы, этот код работает хорошо для многих страниц, но доза не работает для некоторых страниц как ссылку ниже:url.openStream() Дос-не работать на некоторых веб-страниц

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 redirect) и файлы cookie. Сайты возвращают 301 и cookie. Переадресованный URL-адрес проверяет, есть ли у вас файл cookie. Если файл cookie отсутствует, вы считаетесь бедным роботом. – Skywalker