07.11.2012 21:25
 0просмотров 17 0

Загрузка страницы персонажа.

Для продолжения нам необходимо будет сделать вывод в файл с расширением txt, поэтому установим файл для вывода – output.txt.
Итак, сейчас самое время загрузить информацию со страницы персонажа. Пусть первым будет вот этот персонаж:

http://www.heroeswm.ru/pl_info.php?id=2255

Создадим метод, который будет загружать и обрабатывать страницу персонажа. Назовём его GetPage:

private void GetPage(String Address){
}


Он принимает один аргумент – адрес страницы, которую нужно будет загрузить. Сделаем здесь одно небольшое упрощение, которое облегчит нам жизнь. Напишем в этом методе следующее:

try{
            
}catch (Exception ex){
    System.out.println(ex.getMessage());
}

Этот код будет отлавливать и выводить все ошибки выполнения, которые могут привести к падению. С учётом размеров и сложности программы, это допустимо. Далее всё будем писать в блоке try.
Чтобы загрузить страницу, нужно выполнить следующие действия.
Создать адрес:

URL url = new URL((new URI(Address)).toASCIIString());

Создать подключение по этому адресу:

HttpURLConnection conn = (HttpURLConnection) url.openConnection();

Установить некоторые параметры подключению:

conn.setRequestMethod("GET");
conn.setDoOutput(true);


Постараемся убедить сторону сервера в том, что мы не бот, а браузер:

conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1;WOW64; rv:13.0) Gecko/20100101 Firefox/13.0.1");
conn.setRequestProperty("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
conn.setRequestProperty("Accept-Language", "ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3");
conn.setRequestProperty("Accept-Encoding", "identity");


Устанавливаем соединение:

conn.connect();

Теперь нам нужно прочитать информацию, которую нам отправит сервер. Для этого создадим «читателя»:

BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream(), "cp1251"));

Читать будем построчно, поэтому создадим строку, которая будет хранить промежуточный результат:

String line;

Теперь сделаем цикл, который построчно прочитает всё, что пришлёт нам сервер. И сразу выведем эти результаты в файл:

while ((line = rd.readLine()) != null) {
    System.out.println(line);
}


Теперь этот метод нужно вызвать в main. Но main – статичный метод, а GetPage нет, поэтому нельзя так просто взять и вызвать его. Сначала нужно создать экземпляр класса HWM_PersScanner:

HWM_PersScanner scanner = new HWM_PersScanner();

Теперь мы можем вызвать метод у этого экземпляра:

scanner.GetPage("http://www.heroeswm.ru/pl_info.php?id=2255");

Пора проект выполнить. В файле вывода мы увидим html-текст страницы персонажа.

Возможность комментировать доступна после регистрации