inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Node.js로 웹 크롤링하기

1-8. 보너스: 엑셀에 쓰기

Error: invalid column -1

407

한승보

작성한 질문수 18

0

도저히 어떤 부분이 틀린지 모르겠어서 질문 남깁니다.. 이 부분은 깃헙에 없는건가요??

 

C:\Users\96tmd\OneDrive\바탕 화면\새 폴더\lecture\node_modules\xlsx\xlsx.js:4095

function encode_col(col) { if(col < 0) throw new Error("invalid column " + col); var s=""; for(++col; col; col=Math.floor((col-1)/26)) s = String.fromCharCode(((col-1)%26) + 65) +

s; return s; }

^

Error: invalid column -1

at encode_col (C:\Users\96tmd\OneDrive\바탕 화면\새 폴더\lecture\node_modules\xlsx\xlsx.js:4095:46)

at write_ws_xml_data (C:\Users\96tmd\OneDrive\바탕 화면\새 폴더\lecture\node_modules\xlsx\xlsx.js:14999:52)

at write_ws_xml (C:\Users\96tmd\OneDrive\바탕 화면\새 폴더\lecture\node_modules\xlsx\xlsx.js:15077:11)

at write_zip_xlsx (C:\Users\96tmd\OneDrive\바탕 화면\새 폴더\lecture\node_modules\xlsx\xlsx.js:23532:25)

at write_zip (C:\Users\96tmd\OneDrive\바탕 화면\새 폴더\lecture\node_modules\xlsx\xlsx.js:23326:9)

at write_zip_type (C:\Users\96tmd\OneDrive\바탕 화면\새 폴더\lecture\node_modules\xlsx\xlsx.js:23753:10)

at writeSync (C:\Users\96tmd\OneDrive\바탕 화면\새 폴더\lecture\node_modules\xlsx\xlsx.js:23891:22)

at Object.writeFileSync (C:\Users\96tmd\OneDrive\바탕 화면\새 폴더\lecture\node_modules\xlsx\xlsx.js:23914:9)

at crawler (C:\Users\96tmd\OneDrive\바탕 화면\새 폴더\lecture\index.js:76:8)

at processTicksAndRejections (node:internal/process/task_queues:96:5)

C:\Users\96tmd\OneDrive\바탕 화면\새 폴더\lecture>

웹-크롤링 nodejs javascript puppeteer

답변 1

0

제로초(조현영)

add_to_sheet 안에 넣는 인수들을 전부 다 콘솔로그 찍어보세요

0

한승보

콘솔은 다 찍힙니다!

xlsx.writeFile(workbook, 'xlsx/result.xlsx');

이거를 주석하면 에러가 안 뜨는데 쓰면 뜨네요..

0

제로초(조현영)

콘솔로그 찍은 것중에 -1이 들어간 건 없었나요?

0

한승보

const xlsx = require('xlsx'); 
const workbook = xlsx.readFile('xlsx/data.xlsx');
const ws = workbook.Sheets.영화목록;
const records = xlsx.utils.sheet_to_json(ws);
const axios = require('axios')//ajax라이브러리 - html을 응답받음
const cheerio = require('cheerio');//html 파싱 - html -> ks
const add_to_sheet = require('./add_to_sheet');

const crawler = async () => { //순서 보장 - 대신 속도 느림
  add_to_sheet(ws, 'c1', 's', '평점')
  for(const [i, r] of records.entries()){
    const response = await axios.get(r.링크);
    if(response.status === 200) { //응답이 성공한 경우
      const html = response.data;
      //console.log(html);//html 을 다 받는다.
      const $ = cheerio.load(html); //cheerio로 로딩 - $통해 태그들에 접근가능 //원하는 것을 가져오는 부분
      const text = $('.score.score_left .star_score').text(); //jqeury가능
      //console.log(r.제목, '평점', text.trim());
      const newCell = 'C' + (i + 1)
      console.log(ws)
      console.log(newCell)
      console.log(ws)
      console.log(text.trim())
      add_to_sheet(ws, newCell, 'n', parseFloat(text.trim()))
    }
  }
  xlsx.writeFile(workbook, 'xlsx/result.xlsx');
}
crawler();

 

네 코드는 이게 전부입니다..

콘솔에는

이런식으로만 뜨고 있습니다

이렇게 반복문 다 돌고 writeFile쪽 만나면 에러가 뜨네요

0

제로초(조현영)

npm i node-xlsx@0.14 해서 강좌 버전과 동일하게 설치해보세요.

0

한승보

버전을 똑같이 하니까 되네요...! 앞자리가 같은 0이라서 안해도 되는 줄 알았습니다 ㅠ 감사합니다 근데 앞자리가 같아도 안되는 경우가 많은가요?

0

제로초(조현영)

첫 자리가 0인 경우는 앞에 0이 무시됩니다. 즉 14버전에서 21버전으로 버전이 올라간 겁니다.

1

한승보

헉.. 감사합니다!!

headless 궁금한게 있어요!

0

422

2

6강 프록시 서버 테스트 관련하여

0

342

2

페이스북 로그인 로그아웃 자동화관련

0

278

2

3-2 axios로 이미지 저장하기에서 axios 관련 오류..

0

269

2

3-1 이미지 다운로드 준비하기 에서 선택자 구성 질문

0

250

3

2-4 csv 출력하기에서 오류 발생

0

294

3

try-puppeteer.appspot.com 을 사용할 수 없나요?

0

151

1

크롬 확장프로그램 관련 질문드립니다.

0

170

1

크롤링 자바스크립트 exe파일

0

557

1

puppeteer 관련

0

599

2

6-3 proxy-database 관련

1

288

1

크롤링을 여러개 돌리려면 어떠한 방법을 선택하는게 좋을까요?

0

794

1

네이버 영화 평점 크롤링 (axis cheerio)

1

491

1

아래 noscript 내용입니다.

0

528

1

크롤링

0

378

1

앱 크롤링

0

1785

1

페이스북 로그인

0

544

1

2019년도 영상이라 error가 나는 걸까요? 2-4. csv에 출력하기에서 error

1

461

1

안녕하세요! for of와 Promise.all 차이점에 관해서 질문드려요!

0

441

2

대량 요청 처리 방법

0

466

1

구글 패스워드 자동입력시 오류

0

252

1

반복크롤링 할 때 아래 질문주신분 하고 약간 형태가 달라요

0

367

2

인스타그램 돔의 value 값으로 쿼리셀렉터 찾을 수 있나요?

0

302

1

페이스북 로그인시 돔이 생성 안되는 문제

0

312

1