07.11.2012 21:25
0 17 0
Загрузка страницы персонажа.
Для продолжения нам необходимо будет сделать вывод в файл с расширением txt, поэтому установим файл для вывода – output.txt.
Итак, сейчас самое время загрузить информацию со страницы персонажа. Пусть первым будет вот этот персонаж:
http://my.lordswm.com/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://my.lordswm.com/pl_info.php?id=2255");
Пора проект выполнить. В файле вывода мы увидим html-текст страницы персонажа.
Итак, сейчас самое время загрузить информацию со страницы персонажа. Пусть первым будет вот этот персонаж:
http://my.lordswm.com/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://my.lordswm.com/pl_info.php?id=2255");
Пора проект выполнить. В файле вывода мы увидим html-текст страницы персонажа.