프로젝트_트러블슈팅

[PersonaAI - 비공개 프로젝트b-2] Java 크롤링

quantumee 2024. 3. 12. 23:39

node.js로 했던 작업을 Java로 변경해달란 요청이 있었다. 

 

기존 크롤링이 웹드라이버를 쓰는 방식으로 요청받아서 Sellenium 라이브러리를 사용해서 크롤링을 진행했었지만 이번엔 그런것과 무관하게 크롤링만 되기만 하면 된다는 것 같다.

 

하지만 일단은 기존의 것을 그대로 자바를 옮기는게 편할 것 같았고 다른 자바에서 크롤링할 때쓰는 라이브러리가 있는지도 또 찾아봐야했기에 node.js코드를 Java로 바꾸기만 했다. 

 

그런데 실행했더니 에러가 생겼다.

[에러는 나중에 첨부]

에러 내용은 라이브러리 충돌 이슈였다. 이 프로젝트 하나만을 배포해 쓰는 서버면 그냥 라이브러리도 마음대로 뒤집어 엎었겠지만 기존의 솔루션 서버에 추가로 올리는 거다 보니 기존것을 손댈긴 어려웠다.

 

어떤 라이브러리에서 문제가 생기나 봤더니 구글에서 제공하는 라이브러리 [라이브러리 명은 나중에 첨부] 였다.

 

기존 솔루션 개발때 부장님들이 사용하신것 같은데 문제는 셀레니움안에 해당 라이브러리가 내장되어있어 다른 버전끼리 충돌한 것 같다.

 

defendencies에 보이는 기존의 라이브러리 버전 수정을 할 순 없으니 셀레니움 라이브러리를 찾아 들어가서 해당 구글 라이브러리를 export?하면 되는 것 같았다. 하지만 시간이 촉박해서 마음이 급해서인지 못 찾아냈다....

 

그러다 우연히 들은게 다른 라이브러리 였다. 듣기로는 셀레니움은 예전이나 쓰던 툴이고 요즘은 다른 것을 쓴다는 것이다.

 

그래서 구글링을 미친듯이하다가 셀레니움의 상위호환인 playwrite 라는 라이브러리를 찾았다. 하지만 기존의 라이브러리를 뒤엎고 하기엔 로직이 좀 복잡했다. 실패하더라도 시간이 덜걸리는 것을 먼저하자는 마인드로

Jsoup라는 정적페이지 크롤링할 때 쓰이는 라이브러리로 먼저 테스트 해봤다. 의외로 크롤링할 대상들이 동적페이지는 아니였는지 데이터가 굉장히 잘 들어왔다. 덕분에 새로 라이브러리 적용하기 위한 공부할 시간을 덜 수 있었다.