KnP House for Daily

Jsoup으로 html 파싱해서 태그 추출할떄. 본문

Programming/JAVA

Jsoup으로 html 파싱해서 태그 추출할떄.

K.ung 2014.01.17 09:27

프로젝트에서 연관검색어를 추출 하려고, 다음이랑 네이버를 긁어오는데, 태그내 원하는 text를 추출 하려고, 


정규식으로 할까, 라이브러리를 쓸까 하다 둘다 막 해봣더니, Jsoup이 낫다는 결론이 나왓다.


라이브러리는 soap계열에 흔히들 많이 쓰는 Jsoup을 사용했다.


근데 이게 참 사람 골머리를 썩인다. 다음과 같이 Document로 불러보았다.



		Document doc = Jsoup.parse(html,"www.naver.com");


Dom형식으로 불러지는 doc를 열어봐서, 웹페이지에서 실제로본 html이랑 비교를 해보니, 태그들이 살짜기 다르게 변형되어있는 형식이였다.


우와아아아 이게사람 미치게했다. 이런것도 모르고, 계속 추출 하려고 하니, 돼질 않았다....흙흙흘


이런 실수 하지 마시길... (아니면 나만 이상한건가??)


그리고, 네이버나, 다음같은건 그냥 html 파싱하면 안돼고, header정보를 같이보내줘야함. 그래서, 


Jsoup.parse(String html, String baseUri) 형식으로 해서, 넘겨주면 됀다. 'baseUri' 는 루트 디렉토리라고 생각하면 됄듯..


그리고, 태그들 잘 살펴서, class인지, 그냥 속성태그인지 잘보면 됀다. class는 tag.classname 이런식으로..




		Elements row = doc.select("div.rw_help");
		for(Element row2 : row){
			Iterator<Element> it = row2.getElementsByTag("a").iterator();
			while(it.hasNext()){
				String title = it.next().text();
			}		
		}	

여기서 중요한건, 보통 다른 사람들이 올려논 예제를 보면 for()문에서 추출 하던데, ㄴ이러니깐 난 돼지 않았다. 당연한것이, Iterator객체에 담는데, 이게 됄리가잇나.....(noSuchElement exception인가 오류남) 

while()문을 내장해서, iterator내 데이터 추출하는 방식대로 하면, 난됬다.(근데 나만 또 문제일수도....ㅜ)



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

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

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