프로그래밍/HTML, Javascript, CSS

2. 일렉트론(node)에서 웹 페이지 크롤링 하기

포도알77 2021. 5. 22. 11:32

2.  일렉트론(node)에서 웹 페이지 크롤링 하기

 

 1. 왜 일렉트론에서?

  굳이 크롤링을 서버 프로그램처럼 돌릴 필요가 있을까에서 시작되었다. 사용자가 편하게 필요한 내용을 크롤링하는 것. 굳이 서버에 요청하지 않아도 손쉽게 크롤링 결과를 얻을 수 있다는 점이 일렉트론과 크롤러를 합치는 이유가 아닐까 싶다.

 

2. 예제 코드

 예제 코드에 앞서 크롤링에는 axios와 cheerio를 사용했으며, 둘 다 npm install axios cherrio --save 명령으로 설치해주면 된다.

 

const { app } = require('electron');
const axios = require('axios');
const cheerio = require('cheerio');
app.on('ready', ()=>{
    var s = '모니터';
    var url = 'https://www.coupang.com/np/search?component=&q='+encodeURI(s)+'&channel=user';

    var headers= {
        'Host': 'www.coupang.com',
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1 Safari/605.1.15',
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
        'Accept-Language': 'ko-KR,ko;q=0.8,en-US;q=0.5,en;q=0.3',
        'Accept-Encoding': 'gzip, deflate, br',
        'Connection': 'keep-alive',
        'Upgrade-Insecure-Requests': '1',
        'Pragma': 'no-cache',
        'Cache-Control': 'no-cache'
    };
    axios.get(url, {headers:headers})
        .then(html=>{
            const $ = cheerio.load(html.data);
            const li = $('.search-product .name').text();
            console.log(li);
        }).catch(e=>{
            console.log('errr!!', e)
        });
});

 

3. 동작 설명

 간단한 예제이다, axios를 이용하여 쿠팡에서 모니터 검색 결과 페이지를 가져온다. 이후 cheerio 패키지를 이용하여 jqeury 스타일로 상품의 품명들을 모두 긁어다가 출력한다.

 

 이제 크롤링도 되었으니, electron을 이용하여 사용자에게 키워드를 받고 그 결과를 크롤링해서 보여주면 된다. 그건 다음편에 계속

페이스북으로 공유카카오톡으로 공유카카오스토리로 공유트위터로 공유URL 복사