강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

Simple님의 프로필 이미지
Simple

작성한 질문수

Node.js로 웹 크롤링하기

2-3. 첫 puppeteer 크롤링

csv-parse 관련해서 질문드립니다.

작성

·

296

0

안녕하세요. 

이전 강의 중에, csv-parse 부분에서 csv-parse/dist/cjs/sync.cjs 를 사용하라고 얘기해주셨는데요.

npm start 를 하면 const records = parse(csv.toString('utf-8')); 부분에서 에러가 발생하더라고요. 관련해서 csv-parse/dist/cjs/sync.cjs 를 인터넷에 찾아봤는데 나오는게 없습니다.. ㅠ

해당 부분은 어떻게 처리하면 될지 알 수 있을까요?

 

 

SourceCode

const parse = require("csv-parse/dist/cjs/sync.cjs");
const fs = require('fs');
const puppeteer = require('puppeteer');

const csv = fs.readFileSync('csv/data.csv');
const records = parse(csv.toString('utf-8'));

const crawler = async () => {
try {
const browser = await puppeteer.launch( {headless: false} );
await Promise.all(records.map(async (r, i) => {
try {
const page = await browser.newPage();
await page.goto(r[1]);
const scoreE1 = await page.$('.score.score_left .start_score');
if (scoreE1) {
const text = await page.evaluate(tag => tag.textContext, scoreE1);
console.log(text);
}
} catch (e) {
console.error(e);
}
}));
await browser.close();
} catch (e) {
console.error(e);
}



};

crawler();

 

 

 

StackTrace

const records = parse(csv.toString('utf-8'));

                ^

TypeError: parse is not a function

퀴즈

Puppeteer를 Axios/Cheerio 대신 사용해야 하는 주된 이유는 무엇일까요?

모든 웹사이트에서 속도가 훨씬 빠르기 때문

JavaScript로 동적 생성되는 콘텐츠 처리 및 사람처럼 브라우징 흉내 가능

설치가 더 간편하고 메모리를 적게 사용하기 때문

CSV 파일 형식의 데이터만 처리할 수 있기 때문

답변 1

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

const { parse } = require(...) 입니다.

Simple님의 프로필 이미지
Simple
질문자

잘되네요. 감사합니다.

Simple님의 프로필 이미지
Simple

작성한 질문수

질문하기