valenci
385
2021-07-08 21:17:09
4
172

Spring에서 크롤링으로 채용정보 가져올때 올바른 방법이 있나요?


안녕하세요  현재 프로젝트를 기획하고 있습니다.

채용정보를 가져오고 그 이후에 회원들이 원하는 채용정보는 스크랩할 수 있게 만들려고 합니다.

일단 Jsoup을 이용해서 크롤링을 해서 원하는 채용정보 리스트를 가져오는건 테스트 해봤습니다.


근데 크롤링을 통해 가져온 채용정보 리스트를 db에 저장해야하나요?

예를들어 원래 생각은

채용사이트에서 검색 자바 , 지역 서울 ,  학력 고졸로 설정하고 검색을하면

url의 구성이 예를들어  /검색어=자바&지역=서울&학력=고졸&페이지번호=1로 되고

채용정보가 총 200개가 검색되고 한 페이지당 50개의 채용정보를 보여준다고 했을 때

제 페이지에서 페이지번호 2를 누르면 url이  /검색어=자바&지역=서울&학력=고졸&페이지번호=2 로 요청을하고 크롤링해서 해당 리스트를 가져와서 그냥 view에 뿌릴려고 합니다.

그래서 보여줄때는 DB를 쓸일이 없다고 생각했거든요.. 나중에 스크랩을 할 때만 채용정보테이블,회원테이블 을 만들어서 그때만  DB에 저장하려고하는데.. 이게 옳게 생각하는 것인지 궁금합니다.



0
  • 답변 4

  • shirohoo
    1k
    2021-07-08 21:22:12

    상태를 저장하고자 하신다면 데이터베이스로 하시든 파일로 하시든 영속화가 어떻게든 필요할겁니다



  • 제타건담
    7k
    2021-07-08 21:43:23

    본인이 현재 프로젝트를 공부차원에서 접근한다면 말리진 않겠습니다만..

    현업에서 지금 올리신 방법대로 구현한다면 고려해야 할 지점이 있습니다..


    예를 들어 한 사람이 /검색어=자바&지역=서울&학력=고졸&페이지번호=1 이렇게 보낸다고 한다면 문제가 없지만..

    공교롭게 이것을 여러 사람이 동시에 한다면 요청한 사람들 개개별로 크롤링을 돌려야 하는 문제가 발생합니다..

    오히려 이런건 검색어 없이 그냥 1,2페이지를 클릭하는 것으로 했을때 더 비효율적인 결과를 낳겠죠..

    같은 조건으로 크롤링해서 계속 같은 결과만 얻을테니까요..


    그래서 이런건 여러 사람이 접속해도 동일한 것만 요청하지 않을때 의미가 있습니다..

    적어도 검색어를 필수로 넣게 하면 검색어 별로 결과물이 다를테니 그건 그거대로 작업의 의미가 있죠..

    그래서 생각해본다면 제안드리고 싶은게..내부적으로 DB를 사용해서 보관한뒤 그 결과를 보여주되..

    크롤링은 사람들이 채용 공고를 거의 등록하지 않는 시점인 오전 2시..머 이런 시간에 전체 데이터를 크롤링하는 식으로 DB를 구축해 나가는 것이 어떨까 합니다..

    즉 오전 2시 정도에 전체 데이터를 대상으로 크롤링 한뒤 그것을 자신이 구축한 DB에 데이터화 해서 넣고 사람들이 이용할때는 크롤링 한 것이 아닌 자체 보관된 DB 데이터로 보여주는거죠..

    실시간 최신 데이터는 아닐수 있겠으나 모든 결과를 일일이 크롤링 해서 얻어오는 비효율은 없앨수는 있겠죠..


  • valenci
    385
    2021-07-08 22:42:57

    shirohoo 님 답변감사합니다^^

  • valenci
    385
    2021-07-08 22:45:24

    제타건담 님 너무 감사합니다.. 그런부분까지 생각을 못했는데 딱 듣자마자 어이쿠 싶었습니다.ㅜ정말 감사합니다. 그러면 스케쥴러를 이용해서 지정한 시간에 채용정보를 업데이트 할려고 하는데 괜찮을까요?

  • 로그인을 하시면 답변을 등록할 수 있습니다.