개발 노트

NodeJS 크롤링 시작하기 본문

Node

NodeJS 크롤링 시작하기

알 수 없는 사용자 2023. 11. 8. 09:57

nodejs 서버 생성 후

 

axios cheerio 라이브러리 설치

npm install axios cheerio

 

본 게시물에서는 inflearn 사이트를 크롤링하는 것으로 한다

 

inflearn.js 파일생성

// 특정 url 입력시 페이지에 있는 html 코드를 모두 가져옴
const axios = require('axios');
// 가지고 온 html을 파싱
const cheerio = require('cheerio');

const getHTML = async(keyword) => {
try {
// encodeURI를 사용하지않으면 한글 입력시 오류발생
return await axios.get('https://www.inflearn.com/courses?s=' + encodeURI(keyword));
} catch(err) {
console.log(err);
}
}

const parsing = async (keyword) => {
const html = await getHTML(keyword);
console.log(html);
}

parsing('자바스크립트');

 

위의 코드는 html 데이터를 전부 가져온것이기 때문에 중간에 필터링을 해줄 필요가 있다.

 

 

다음과 같은 코스 카드들에서 제목을 추출해 보자

다음은 수정된 parse 함수이다

const parsing = async (keyword) => {
    const html = await getHTML(keyword);
    // 필터링
    const $ = cheerio.load(html.data);
    // 추출하고 싶은 html 데이터 클래스명 기입
    const $courseList = $(".course_card_item");

    let courses = [];
    // courseList 는 현재 .couse_card_item 클래스명을 가진 dom을 전부 가져온것이기 때문에 리스트이다
    
    // 아래 탐색하는 함수에서 node 즉 하나의 course_card_item 에서 제목을 추출해본다
    $courseList.each((i,node)=> {
        const title = $(node).find(".course_title").text();
        console.log(title);
    });
}

 

parse를 실행하면 다음과 같은결과가 나온다

더보기
진짜! 자바스크립트(Javascript) - 기초부터 고급까지진짜! 자바스크립트(Javascript) - 기초부터 고급까지
[코드캠프] 훈훈한 Javascript[코드캠프] 훈훈한 Javascript
시나브로 자바스크립트시나브로 자바스크립트