<aside> 🚨 일반적으로, 야놀자는 크롤링을 허용하지 않습니다. 하지만, 야놀자 부트캠프를 참여하면서 야놀자측에서 상업적 목표가 없음을 판단하여 크롤링을 허용했습니다.

</aside>

PM → BE 요청 데이터

https://docs.google.com/spreadsheets/d/19yg318Jk0xKELbqROJILt325OTEdVkZY/edit?usp=sharing&ouid=117477819520755635188&rtpof=true&sd=true

PM 요청사항

크롤링 | JavaSelenium을 활용하여 동적 웹 크롤링 진행

크롤링 준비단계

  1. Selenium과 ChromeDriver 설치

  2. selenium implementation 진행

    //crawling
    	implementation 'org.seleniumhq.selenium:selenium-java'
    	implementation 'org.seleniumhq.selenium:selenium-api'
    	implementation 'org.seleniumhq.selenium:selenium-chrome-driver'
    
  3. ChromeOption : Chrome 드라이버의 속성을 조작하기 위한 WebDriver

    ChromeOptions chromeOptions = new ChromeOptions();
        chromeOptions.addArguments("--no-sandbox");
        chromeOptions.addArguments("--disable--gpu");
        chromeOptions.addArguments("--start-minimized");
        chromeOptions.addArguments("--disable-popup-blocking");
        System.setProperty("webdriver.chrome.driver",
            "/Users/qwert/Downloads/chromedriver-mac-arm64/chromedriver");
    
  4. ChromeDriver

    ChromeDriver chromeDriver = new ChromeDriver(chromeOptions);
        for (int i = 0; i < localNumberArray.length; i++) { //지역 개수에 따라 반복
            String localNumber = localNumberArray[i];
            String url = BASE_URL + localNumber + SUFFIX_URL;
            chromeDriver.get(url); //해당 url을 chromeDriver로 가져온다.
            chromeDriver.manage().timeouts().implicitlyWait(Duration.ofMillis(3000));
    				// 정해진 시간,초만큼 로딩 시간을 기다린다.
    

야놀자 크롤링 진행 로직

리팩토링

1. %호텔 서비스와 크롤링 서비스 분리