inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Node.js로 웹 크롤링하기

axios와 cheerio로 노래 목록 가져오기

569

muz

작성한 질문수 3

0

제로초님 안녕하세요. 강사님의 'axios-cheerio 로 첫 크롤링하기 '편을 보고 직접 다뤄보고자 응용해보던 중, 원하는 결과가 나오지 않아 질문을 올리게 되었습니다.

저는 해당 사이트(네이버 바이브)에서 `.track_section .select_all .text_area .text`에 있는 총 곡 수를 받아와 `songsNum`이라는 변수에 저장하고, `songsNum`수만큼 반복문을 돌려 크롤링한 노래 제목과 아티스트 정보를 배열에 따로 저장하여, json 형식으로 제작하고자 합니다.

그러나 하단의 제가 작성한 코드에서 처럼 `$('.track_section .select_all .text_area .text').text();`나 `$('. track_section .text').text();`등을 통해 text값을 가져오려고 해도 값이 가져와지지 않습니다. 뿐만아니라, 노래 제목과 아티스트명을 `$(선택자).text()`를 이용해서 가져오려고 해도 전부 공백이 뜹니다. 

nodemon을 돌리면서 console.log()로 값이 제대로 가져와지는지 확인하고 있는데, 아래의 사진처럼 계속 공백이 나옵니다. 

소스코드

const fs = require('fs');
const axios = require('axios');
const cheerio = require('cheerio');

let vibeUrl = fs.readFileSync('./data/vibe.txt').toString();

let title = new Array();
let artists = new Array();

const crawler = async() => {
    const response = await axios.get(vibeUrl);
    if(response.status === 200) {
        const html = response.data;
        const $ = cheerio.load(html);
        const songsNum = $('.track_section .select_all .text_area .text').text();
        console.log(songsNum);

        // for(let i = 0; i < songsNum; i++) {

        // }
    }
}

crawler();

혹시 선택자를 어떻게 이용해야 제가 원하는 값들을 가져올 수 있을지 여쭤보아도 될까요?

웹-크롤링 nodejs puppeteer javascript

답변 1

0

제로초(조현영)

axios는 정적 사이트에서만 쓸 수 있습니다. 지금 확인해보니 바이브는 동적 사이트라서 나중에 배우는 puppeteer로 스크래핑 하셔야 합니다.

0

muz

답변 감사합니다! 얼른 puppeteer 강의 들어보고, 다시 시도해봐야겠어요!ㅎㅎ

headless 궁금한게 있어요!

0

481

2

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

0

352

2

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

0

291

2

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

0

281

2

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

0

261

3

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

0

303

3

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

0

157

1

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

0

172

1

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

0

563

1

puppeteer 관련

0

606

2

6-3 proxy-database 관련

1

291

1

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

0

800

1

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

1

495

1

아래 noscript 내용입니다.

0

531

1

크롤링

0

381

1

앱 크롤링

0

1788

1

페이스북 로그인

0

547

1

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

1

465

1

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

0

451

2

대량 요청 처리 방법

0

470

1

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

0

256

1

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

0

371

2

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

0

306

1

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

0

316

1