KnP House for Daily

네이버 검색 쿼리 붙여 url 날리기 본문

Programming/JAVA

네이버 검색 쿼리 붙여 url 날리기

K.ung 2014.01.16 14:09

네이버에 검색어 쿼리를 날려주려고 url 주소 형식에 맞게 쿼리 붙여서 소스에서 던져서 html 파싱해봤더니, 


403에러가 떳다, 비정상적인 접근때문에 네이버 측에서 막는것같다.


 이를 해결 하기 위해, HttpURLConnection 을 이용하여, HTTP header 형식을 따와서, 네이버 형식에 맞게


 header를 수정해서 붙여서 스트림을 하였다. 흠, 역시 이제서야 잘된다. header없이 보내니깐, 문제였다.


 네이버 header 형식은 크롬에서 F12눌러서, Network 탭 클릭하면 볼 수 잇다.


p.s. 검색쿼리 쓸 때 띄어쓰기가 있다면, 단어와 단어 사이에 '+' 를 붙여줘야 한다. 그래서 Tokenizer가 있음

p.s. URLEncoder.encoder를 안하면, 검색 결과 html 문서 파싱해서 보면, 검색쿼리만 없는체로 돼어있음.. 꼭 인코딩 해야함

다음은 소스다.



String query = "영어 과외";
		String url = null;
		
		boolean checkToken = false;
		
		for(int i=0 ; i<query.length() ; i++){
			if(query.charAt(i)==' '){
				checkToken = true;
			}
		}
		
		try {			
			if(checkToken == true){
				url = FindRelateQuery.naverURL(tokenNizer(query));
				String html = FindRelateQuery.htmlDown(url);
				System.out.println(html);

			}else{
				url = FindRelateQuery.naverURL(URLEncoder.encode(query,"utf-8"));
				String html = FindRelateQuery.htmlDown(url);
				System.out.println(html);
			}

		} catch (UnsupportedEncodingException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}


//header 부분
URL url = new URL(str);  
		
			HttpURLConnection huc = (HttpURLConnection)url.openConnection();  
			huc.setRequestMethod("GET");  
			// request header set  
			huc.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");  
			huc.setRequestProperty("Accept-Charset", "windows-949,utf-8;q=0.7,*;q=0.3");  
			//huc.setRequestProperty("Accept-Encoding", "gzip,deflate,sdch");  
			huc.setRequestProperty("Accept-Language", "ko-KR,ko;q=0.8,en-US;q=0.6,en;q=0.4");  
			huc.setRequestProperty("Connection", "keep-alive");  
			huc.setRequestProperty("Cookie", "NNB=MI53CAMUMLHVE; npic=BsSl3XTUzqmYQu1SNr/q5Z1jzadXm8HJ+uTdNTlDM88W5ZE3Wda3+W+GZlrpZXKsCA==; page_uid=q2+RJv33zRVssclygEZsssssstC-430923");
			huc.setRequestProperty("Host", "search.naver.com");  
			huc.setRequestProperty("Refer", "http://www.naver.com");
			huc.setRequestProperty("User-Agent", "Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25");  
			
			BufferedReader reader = new BufferedReader(new InputStreamReader(huc.getInputStream(),"utf-8"));
			


저작자 표시 비영리 변경 금지
신고

'Programming > JAVA' 카테고리의 다른 글

Jsoup으로 html 파싱해서 태그 추출할떄.  (0) 2014.01.17
네이버 검색 쿼리 붙여 url 날리기  (6) 2014.01.16
6 Comments
댓글쓰기 폼