Java

20.06.22 자바로 웹 크롤

우롱차 2020. 8. 29. 15:08
728x90

python :beautifulsoup4, selenium

java :        jsoup,             selenium

 

프로젝트 생성

파이썬 < - 뷰티풀숩이랑 셀레니움 필요한데 < -아나콘다 (패키지 매니저)

 

씨드라이브에 빅데이터에 새폴더 (생성라이브러리)해서 넣어줌

 

자바 - 오라클 연동 -> OJBC라이브러리가있는데 메이븐이안돼서 오리지널 방법도 알아야함


static 붙이는 이유는

static String base = "https://finance.naver.com/item/frgn.nhn?code=005930&page=1";

try~ catch ~ finally -> 예외 처리

처리하는 애가 직접 하는거임

선반에서 컵을 꺼낸다던지 객체에 있는 메서드 자체가

 

throws ~~ -> 예외 던짐

물이없는데?하고

예외를 직접 처리하지않고 나를 호출한사람한테

계속 호출한녀석한테 앞으로 감 최종적으로 main까지 간다.

예외처리하지않고 에러띄우는거

 

>>>>>> 처리하는 주체가 달라짐.

코드를 짜면 둘 다 섞어쓴다.

main이 알아야하는 예외가있어서

throws를 해서 팀장이 알아야하기때문에.이런 케이스도 있음


태그명

하나의 셀을 td라고 함 td들이 모이면 td를 싸는 전체 한줄을 tr이라고 함.

tr은 테이블로우의 약자 가로줄

제목열을 thead

내용열을 tbody 제목열이 필요없으니까 tbody만 긁은거

Elements line = doc.select("table.type2 > tbody > tr");

Elements line = doc.select("table.type2 > tbody > tr");

 

돔트리

table - thead - tr

         -tbody -

 

크롤링은 마니 해보는게 실력이 는다.

 

td가 똑같이 여러개 있을 때 리스트로 해서 선택자도 다똑같을때 td를 인덱스 번호로 긁어오자


결측치 N/A 누락된 값

이런거 처리를 해줘야함 안해주면 error가 남

0으로 넣던가 전체의 평균을 넣어줌 << 전체평균은 통계쪽에서

// size가 2개 있으면, 0 , 1번지수가 일때만 bookrate에 넣어라! 
if (movie.select("span.num").size() == 2 ) { 
	String bookRate = movie.select("span.num").get(1).text(); 
} else { 
	String bookRate = "0"; 
}

애초에 변수 선언할 때 bookRate 에 "0";을 넣어주면
else문을 따로 적어 주지않아도 되는 효율적인 코드가 생긴다.

substring

= 부터 짜르면 안되니까 +1해준거임

끝에 종료하믄 값이 없으니까 그냥 끝까지 코드만 긁어와 진거임

String naverHref = movie.select("dt.tit > a").attr("href"); // 네이버 영화 url 
naverCode = naverHref.substring(naverHref.lastIndexOf("=")+1); // 네이버 영화 코드
728x90