Java를 이용하여 페이지 정보 가져오기(IP, Header, 페이지정보 등)
Java를 이용하여 페이지 정보 가져오기(IP, Header, 페이지정보 등)
java를 이용해서 특정 페이지의 Ip와 Header 정보 및 페이지정보를 가져오는 방법에 대해서 포스팅이다.
* ip 주소와 Header 정보, 페이지 Html 소스 정보 총 3개를 가져오는 방법이다.
요약
1. ip 주소 가져오기
2. Header 정보 가져오기
3. Html 소스 가져오기
1. InetAddress 클래스를 이용하여 IP 주소를 가져오기
자신의 ip정보와 네이버의 ip정보를 가져오는 방법이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 |
// 자신의 컴퓨터의 IP주소를 얻어오기
try {
InetAddress localHost = InetAddress.getLocalHost();
System.out.println("자신의 IP 정보");
System.out.println("localHost.getHostName() : " + localHost.getHostName());
System.out.println("localHost.getHostAddress() : " + localHost.getHostAddress());
System.out.println();
// 네이버의 ip정보 가져오기
InetAddress byName = InetAddress.getByName("www.naver.com");
System.out.println("네이버의 IP 정보");
System.out.println("byName.getHostName() : " + byName.getHostName());
System.out.println("byName.getHostAddress() : " + byName.getHostAddress());
System.out.println();
// 네이버의 ip정보 다 가져오기
InetAddress[] allByName = InetAddress.getAllByName("www.naver.com");
System.out.println("네이버의 IP 정보들");
for (InetAddress address : allByName) {
System.out.println("address.getHostName() : " + address.getHostName());
System.out.println("address.getHostAddress() : " + address.getHostAddress());
}
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} |
cs |
결과 : 자신의 IP 정보 네이버의 IP 정보 네이버의 IP 정보들
|
2. URLConnection 을 사용하여 특정 페이지의 Header 정보를 가져오기
특정 페이지의 header 정보를 iterator을 사용하여 모두 출력하는 방법이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 |
// URLConnection : header 정보를 가지고 온다.
try {
URL url = new URL("http://www.naver.com");
URLConnection urlCon = url.openConnection();
// InputStream : 해당 호스트의 페이지 정보를 가져온다.
System.out.println("urlCon.getContentType() : " + urlCon.getContentType());
System.out.println("urlCon.getContent() : " + urlCon.getContent());
System.out.println("urlCon.getContentEncoding() : " + urlCon.getContentEncoding());
Map<String, List<String>> map = urlCon.getHeaderFields();
Iterator<String> iterator = map.keySet().iterator();
while (iterator.hasNext()) {
String key = iterator.next();
System.out.println("Header Info : " + key + " = " + map.get(key));
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} |
cs |
결과 : urlCon.getContentType() : text/html; charset=UTF-8
|
3. URL.openStream()을 이용하여 페이지 정보 가져오기
페이지의 html 소스를 text 방식으로 출력하는 방법입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 |
try {
URL url = new URL("http://www.naver.com");
InputStream openStream = url.openStream();
InputStreamReader isr1 = new InputStreamReader(openStream, "UTF-8");
BufferedReader bis1 = new BufferedReader(isr1);
System.out.println("-------------------------------------------------------");
System.out.println("페이지정보 : ");
while (true) {
String str = bis1.readLine(); // 한줄을 읽어서
if (str == null) {
break;
}
System.out.println(str);
}
bis1.close();
isr1.close();
} catch (MalformedURLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} |
cs |
결과 : 페이지의 정보 (Html 소스)를 Text 형식으로 가져옴
* 너무 많아서 생략
가공하면 크롤링에 수월하게 사용할 수 있음
|