본문 바로가기

Programming!

Spring Boot + Schedule 웹 스크래핑 해보기

우선 기본 플젝의 gradle은 기존과 동일하다. 

(joda time lib만 추가)

...

dependencies {

    compile group: 'joda-time', name: 'joda-time', version: '2.9.7'


    compile('org.projectlombok:lombok')

    compile("org.springframework.boot:spring-boot-starter")


    testCompile("org.springframework.boot:spring-boot-starter-test")

}

...



첫번째로 스케쥴만 진행해보자. 스케쥴의 경우는 @EnableScheduling 만 추가하면 설정에서 딱히 할 건 없다.

@EnableScheduling

@SpringBootApplication

public class WebScrapingApplication {

public static void main(String[] args) {

SpringApplication.run(WebScrapingApplication.class, args);

}

}


실행할 Tasks를 @Component등록 후 boot 실행

@Slf4j

@Component

public class SiteScraping {

@Scheduled(fixedRate = 5000)

public void download() {

log.info("Download At {}", DateTime.now().toDate());

}

}


@Scheduled(fixedRate = 5000) 의 경우는 5초마다 해당 메소드가 실행된다. 동일하게 cron 형태의 경우는 @Scheduled(cron="*/5 * * * * *") 이렇게 사용하면 된다. 


이제 스케쥴을 지정했으니 실질적인 스크래핑을 해보자. 목표는 '쿠팡등과 같은 쇼핑몰의 상품정보를 주기적으로 가져온다 ' 이다. 


짬내용.. 만약 spring boot실행시 오류가 아래와 같다면 실행 속성(program arguments)에 '--debug'를 추가한 후, 실행한다.

Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled.


Spring Batch를 이용해 스크래핑하는 것이 목표이지만 우선은 일반적인 방법에서 부터 진행해보자.