스크래핑할 리소스의 렌더링 시간 기다려 주기
저같은 경우 잘만 통과되는 통합테스트에서 4번중에 2~3번정도를 갑자기 검색키워드를 변경하고 실행시켰을 경우 실패하는 경우가 생겼었습니다.
알고 보니 가져오려는 값이 브라우저가 렌더링 되며 js로 값이 전부 생성되기전에 제가 값을 가져왔기에
빈값으로 가져온 경우였습니다.
그러기에 Java에서는 널포인트 익셉션이 터졌었죠 저같은 경우 Java , Selenium 을 활용했었는데 Selenium 에서 특정 CSS,DOM 을 렌더링 기다려주는 방식을 지원해 주니 활용하시기 바랍니다
Selenium을 사용하신다면 웹 드라이버 매니저를 사용하세요
웹 드라이버는 크롬의 버전이 업데이트될때마다 같이 버전을 올려주어야 합니다.
버전마다 재설치하고 그 버전관리가 정말 정말 귀찮습니다. 브라우저는 언제 업데이트를 할 줄 도 몰라요 자동화를 하려고 웹훅을 사용해 작업 하시지 마시고 그냥 웹드라이버 매니저라는 사용할떄 최신화를 해주는 만들어진 것을 사용하시는게 스트레스를 안 받게됩니다.
동적 웹 스크래핑의 서버리스라면 JVM을 사용하지 마세요
일단 제가 삽질을 먼저 해본 사람으로서 서버리스라면 크롬이나 크로미늄의 바이너리파일을 두던가해서 브라우저 자체를 준비해야합니다. 그렇다면 가뜩이나 jvm만으로도 무겁고 느린데 무거운 작업이 하나가 더 늘어나는 것이죠 이렇다면 서버리스로서의 작업이 너무느려지는것입니다. 저는 그래서 그냥 웹 스크래핑을 하신다면 nodejs를 쓰는것을 추천합니다. node js에서는 크롬과 드라이버의 호환에 맞는 라이브러리를 제공하기때문에 그냥 node.js 를 쓰시는게 마음 편히 하실것 같습니다. (람다 레이어 설정이 너무 귀찮고 무겁습니다)
이상 사이드프로젝트때 했던 삽질을 공유해드렸습니다!