1 голос
 
1430 просмотров
9.09.2016 / 14:51  boNNdaR

Загрузка .html средствами Java

При попытке загрузки с сайта thefreedictionary.com .html файла возникает ошибка отсутствия Exception in thread "main" java.io.IOException: Server returned HTTP response code: 403 for URL: http:/ru.thefreedictionary.com/_/403.aspx?p
  Сам код:
  1. public static String getPage(String pageAddress) throws Exception {
  2.         StringBuilder sb = new StringBuilder();
  3.         URL pageURL = new URL(pageAddress);
  4.         URLConnection uc = pageURL.openConnection();
  5.         try (BufferedReader br = new BufferedReader(new InputStreamReader(uc.getInputStream()))) {
  6.             String inputLine;
  7.             while ((inputLine = br.readLine()) != null) {
  8.                 sb.append(inputLine);
  9.             }
  10.         }
  11.         return sb.toString();
  12.     }
    На других сайтах это тоже не пашет, пока не сменить вид URL с http://ru.thefreedictionary.com/слово на http://ru.thefreedictionary.com/%D1%81%D0%BB%D0%BE%D0%B2%D0%BE.
   Но на thefreedictionary.com эта фишка не проходит. В любом случае возникает ошибка 403.
Изм. boNNdaR от 9.09.2016 / 14:51
Ответы
 
2 голоса
 
# 9.09.2016 / 21:15  Naik
Есть замечательная библиотека Jsoup. С ней можно сделать так:
  1. Response response= Jsoup.connect(location)
  2.            .ignoreContentType(true)
  3.            .userAgent("Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0")  
  4.            .referrer("http://www.google.com")  
  5.            .timeout(12000)
  6.            .followRedirects(true)
  7.            .execute();
  8.  
  9. Document doc = response.parse();

Дальше можно с документом делать что угодно в стиле jQuery
Изм. Naik от 9.09.2016 / 21:16
 
2 голоса
 
# 9.09.2016 / 16:35  aNNiMON
Во-первых, делай url кодирование запроса: site + URLEncoder.encode("слово") (как-то так).
Во-вторых, возможно блокируется твой запрос. Добавь заголовки туда, User-Agent поставь как у браузера и тогда будет больше шансов получить нормальную страницу.
  1. URLConnection uc = pageUrl.openConnection();
  2. uc.addRequestProperty("User-Agent", USER_AGENT);
Изм. aNNiMON от 9.09.2016 / 16:37
Всего: 2

Реклама

Мы в соцсетях

tw tg yt gt