백엔드에서 크롤링하기 (2) - CSV 파일로 변환 및 DB에 저장

차곡차곡·2024년 4월 14일
0

SpringBoot + React

목록 보기
3/9

크롤링은 웹 페이지 구조가 변하면 사용하기 힘들어지기 때문에 서버 실행 도중에 구조가 변하게 된다면 에러가 발생하게 된다. 그래서 해당 크롤링 데이터들을 미리 백업해두기 위해 DB에 저장하기로 했다. DB에 저장하려면 우선 데이터들을 알아보기 쉽게 정돈해야해서 먼저 CSV 파일로 변환하려고 한다.

[CsvController.java]

private final String filePath;

    public CsvController(@Value("${fashion.filePath}") String filePath) {
        this.filePath = filePath;
    }

    @Autowired
    private CsvToDatabaseService csvToDatabaseService;

    @GetMapping("/csvToDatabase")
    public String csvToDatabase() {
        try {
            csvToDatabaseService.saveCsvDataToDatabase(filePath);
            return "CSV 파일을 DB 저장하는데 성공";
        } catch (IOException e) {
            e.printStackTrace();
            return "CSV 파일을 DB 저장하는데 실패";
        }
    }

[CsvToDatabaseService.java]

private final String filePath;

    @Autowired
    private FashionRepository fashionRepository;

    public CsvToDatabaseService(@Value("${fashion.filePath}") String filePath) {
        this.filePath = filePath;
    }

    public void saveCsvDataToDatabase(String filePath) throws IOException {
        BufferedReader reader = new BufferedReader(new FileReader(filePath));
        String line;
        while ((line = reader.readLine()) != null) {
            // CSV 데이터를 파싱하여 DB에 저장
            String[] parts = line.split(","); // CSV 파일 쉼표로 구분
            Fashion fashion = Fashion.builder()
                    .image(parts[0])
                    .subject(parts[1])
                    .build(); // 생성자를 통해 필드 설정
            fashionRepository.save(fashion); // DB 에 저장
        }
        reader.close();
    }

현재는 우선 포스트맨이나 페이지 주소로 직접 GET 요청을 해야만 DB에 들어간다.
다음엔 DB 내용을 프론트 엔드로 전달하는 과정을 해보고 라디오 버튼을 클릭 시 해당 성별에 맞는 페이지 주소로 GET 시키는 작업을 해야겠다.

profile
계단식 성장

0개의 댓글