<aside> 💡 crawl : 기어다니다. web crawler: 봇이 웹사이트를 기어다니도록 만드는 프로그램

</aside>

웹 크롤러가 필요한 이유?

csv-parse 패키지로 csv 파싱하기

먼저 프로젝트 폴더를 새로 만들어 npm init을 해준다.

npm start에 node가 동작하도록 처리한다.

{
  "name": "1-csv-parsing-example",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "node index"
  },
  "author": "Vicky",
  "license": "MIT",
  "dependencies": {
    "csv-parse": "^5.0.4"
  }
}

csv-parser라는 라이브러리로 csv를 파싱한다.

> npm i csv-parse

<aside> 💡 CSV : Comma Seperated Value 즉, 콤마(,)와 줄바꿈으로 구분된 값을 의미한다. 프로그래밍에서 많이 쓰이는 2차원 데이터 저장 방식이다.

</aside>

테스트할 data.csv의 파일은 아래와 같다고 하자.

타이타닉,<https://movie.naver.com/movie/bi/mi/basic.nhn?code=18847>
아바타,<https://movie.naver.com/movie/bi/mi/basic.nhn?code=62266>
매트릭스,<https://movie.naver.com/movie/bi/mi/basic.nhn?code=24452>
반지의 제왕,<https://movie.naver.com/movie/bi/mi/basic.nhn?code=31794>
어벤져스,<https://movie.naver.com/movie/bi/mi/basic.nhn?code=72363>
겨울왕국,<https://movie.naver.com/movie/bi/mi/basic.nhn?code=100931>
트랜스포머,<https://movie.naver.com/movie/bi/mi/basic.nhn?code=61521>
해리 포터,<https://movie.naver.com/movie/bi/mi/basic.nhn?code=30688>
다크나이트,<https://movie.naver.com/movie/bi/mi/basic.nhn?code=62586>
캐리비안의 해적,<https://movie.naver.com/movie/bi/mi/basic.nhn?code=37148>

index.js

const fs = require("fs");

const csv = fs.readFileSync("csv/data.csv"); // 0, 1로 이루어진 컴퓨터 친화적인 버퍼 데이터
const test = csv.toString("utf-8"); // 문자열로 변환
console.log(test); // data.csv 반환

위와 같이 fs로 csv/data.csv를 불러와 문자열로 변환하면 위 data.csv가 불러와진다.

해당 내용을 csv-parse로 파싱해보자

const parse = require("csv-parse/lib/sync");
const fs = require("fs");

const csv = fs.readFileSync("csv/data.csv");
const records = parse(csv.toString("utf-8"));
records.forEach((r, i) => {
  console.log(i, r);
});

// 0 [ '타이타닉', '<https://movie.naver.com/movie/bi/mi/basic.nhn?code=18847>' ]
// 1 [ '아바타', '<https://movie.naver.com/movie/bi/mi/basic.nhn?code=62266>' ]
// 2 [ '매트릭스', '<https://movie.naver.com/movie/bi/mi/basic.nhn?code=24452>' ]
// ..