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을 이용하여 사용자에게 키워드를 받고 그 결과를 크롤링해서 보여주면 된다. 그건 다음편에 계속
'프로그래밍 > HTML, Javascript, CSS' 카테고리의 다른 글
1. Electron 설치 및 간단한 예제 (0) | 2021.05.17 |
---|---|
[블로그] 티스토리 글 하단 카카오(SNS) 공유 버튼 만들기 (1) | 2020.12.22 |
[JS] HTML에서 JS를 이용하여 IP 주소 얻기 (3) | 2019.04.03 |
[JS] IP를 이용한 Geolocation 정보 얻기 (위도, 경도) (0) | 2019.04.03 |
[JS] Javascript를 이용하여 HTML 주석 지우기 / 숫자 콤마 넣기 (0) | 2019.03.28 |