Java - Jsoup를 이용한 크롤링, CSV파일 변환

김준석·2023년 1월 31일
0

자바 Jsoup 데이터 크롤링

**Java에서 jsoup를 활용하여 크롤링 하는 방법을 사용하였다.
졸업작품으로 사용자 취향에 맞춘 향수를 추천해주는 서비스를 만드는 중인데, 향수 데이터가 꽤 많다보니 크롤링이 필요했다.

Jsoup 라이브러리 설치
먼저 위 사이트에서 jsoup라이브러리를 설치한 후,

인텔리제이 File - Project Structure - Modules - Dependencies에서 다운받은 Jsoup.jar파일을 불러온 후 사용하면 된다.**


   public Document connectAndGetDocument(String targetUrl) throws IOException {
       Connection connection = Jsoup.connect(targetUrl);
       Document document = connection.get();

       return document;
   }

Connection 객체는 targetUrl(Html)과 연결하기 위한 정보를 담고 있다.
Document는 Html document를 얻어내는 객체이다.


    public List<PerfumeCrawling> crawPerfumeName(String targetUrl) throws IOException {
        Elements setRange = connectAndGetDocument(targetUrl).select(PERFUME_NAME_CSS_QUERY_RANGE);
        List<PerfumeCrawling> perfumeCrawlingNameList = new ArrayList<>();
        
        for (int i = 0; i < setRange.size(); i++) {
            PerfumeCrawling perfumeCrawling = new PerfumeCrawling(setRange.get(i).attr(PERFUME_NAME_ATTRIBUTE_KEY));
            perfumeCrawlingNameList.add(perfumeCrawling);
        }
        return perfumeCrawlingNameList;
    }

Element는 앞서 불러온 Document객체의 Html 요소를 파싱하기위한 객체이다.

	private File importedFile;
    private BufferedWriter bufferedWriter;

    public CsvFileConversion() throws IOException {
        this.importedFile = new File(filePath);
        this.bufferedWriter = new BufferedWriter(new FileWriter(importedFile));
    }

이후 filePath를 지정해 File 객체를 만들어 Bufferwriter에 집어넣으면 된다.

 public void makeCsvData(CrawlingService crawlingService, String targetUrl) throws IOException {
        int listSize = crawlingService.crawPerfumeFeature(targetUrl).size();

        for (int i = 0; i < listSize; i++) {
            String crawledData = "";
            crawledData = getCrawlingTarget(crawlingService, targetUrl, i);
            bufferedWriter.write(crawledData);
            bufferedWriter.newLine();
        }
        bufferedWriter.flush();
        bufferedWriter.close();
    }

크롤링한 후에 bufferWriter.write() 를 하기만하면 끝 ! 간단하죠?

profile
기록하면서 성장하기!

0개의 댓글