Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- docker
- RxJS
- pylint
- 품질
- angular2 google analytics
- 서버
- REQUEST
- 신한대학교
- nodejs
- ISO9126
- ISO25010
- cyber.shinhan
- 페이지구분
- ISO25000
- 구글 클라우드 플랫폼
- vscode
- Nexus
- 크롤링
- phantomjs
- 네이버 클라우드 플랫폼
- 도커
- 소프트웨어
- angular
- angular-cli
- angular2
- SW
- casperJS
- 품질 표준
- Cheerio
- npm repository
Archives
- Today
- Total
나를 위한 기록들
request, cheerio를 이용하여 웹 크롤링하기 본문
request, cheerio모듈을 이용해서 tistory 메인화면 크롤링
request, cheerio 모듈을 설치
npm install --save request
npm install --save cheerio
request 모듈 사용법 https://www.npmjs.com/package/request
var request = require('request');
request('http://www.google.com', function (error, response, body) {
console.log('error:', error); // Print the error if one occurred
console.log('statusCode:', response && response.statusCode); // Print the response status code if a response was received
console.log('body:', body); // Print the HTML for the Google homepage.
});
request 모듈로 tistory.com 크롤링
const request = require('request');
const cheerio = require('cheerio');
request('http://tistory.com', function (error, response, body) {
if(error) throw error
console.log('body: ', body);
});
결과
원하는 부분만 크롤링하기, cheerio 이용
cheerio 모듈 사용법 https://www.npmjs.com/package/cheerio
크롬 - 검사를 이용해 엘리먼트 찾기
반복되는 부분 찾기
recomm_blog 클래스가 반복되는것이 보였다 태그에서 Copy selector
#mArticle > div.tistory_recomm > div.recomm_blog 이부분을 가지고 반복문을 돌릴예정
소스코드( 제목, 작성자만 크롤링 )
const request = require('request');
const cheerio = require('cheerio');
request('http://tistory.com', function (error, response, body) {
if(error) throw error
$ = cheerio.load(body); // request모듈을 이용해서 가져온정보를 넣어줌
let json = [], title, writer
$('#mArticle > div.tistory_recomm > div.recomm_blog').each(function(index, ele){ // <div class="recomm_blog">를 반복
title = $(this).find('a > .tit_subject').text() // a태그 아래에 class="tit_subject"의 텍스트(제목)
writer = $(this).find('a > .txt_writer').text() // a태그 아래에 class="txt_writer"의 텍스트(작성자)
json.push({ title: title, writer: writer })
});
console.log('json: ', json);
});
결과
json: [ { title: '몸의 회복을 위한 초간단 공마사지', writer: '일다님' },
{ title: '누구나 따라 하기 쉬운 \'알로에\' 삽목', writer: '키키로님' },
{ title: '생크림까지 가득, 노오븐 오레오케이크', writer: 'S diary님' },
{ title: '강돌로 쌓은 무주 지전마을의 곡몰길', writer: '눌산님' },
{ title: '롯데 필수 전력으로 자리 잡은 번즈', writer: '지후니(심종열)님' } ]
'JS > 크롤링' 카테고리의 다른 글
robots.txt ( 로봇 배제 표준 ) 란 무엇일까? (0) | 2017.04.22 |
---|---|
[크롤링] casperJS, PhantomJS 로 로그인, 캡쳐 하기 (0) | 2017.03.30 |
Comments