참치코더의 꿈 메모장

Node.js// request모듈, cheerio모률, async 모듈(1) 본문

Node.js

Node.js// request모듈, cheerio모률, async 모듈(1)

참치깡 2020. 3. 4. 17:25
728x90

request모듈

 

request모듈은 웹페이지에 있는 코드를 긁어오는데 사용하는 Node.js 모듈이다.

 

1
2
3
4
5
const request = require('request');
 
request('http://google.com',(error, response, body)=>{
    console.log(body);
});
cs

request 첫번째에 긁어오려고 하는 url주소를 매개변수로 입력하고 두번째에 리턴 함수를 입력하여 긁어온다.

 

cheerio 모듈

 

cheerio 모듈은 HTML 문자열을 jQuery 객체로 만들어주는 객체이다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
const request = require('request');
const cheerio = require('cheerio');
 
for(let i=1; i<5; i++){
request(`http://www.hanbit.co.kr/store/books/new_book_list.html?page=${i}&brand=&cate1=&cate2=&searchKey=&keyWord=`,function(error,response,body){
  if(!error && response.statusCode == 200){
    const $ = cheerio.load(body);
 
    const array = [];
    $('.sub_book_list').each(function(){
    const title = $(this).find('.book_tit').text().trim();
    const writer =  $(this).find('.book_writer').text();
 
    array.push({
      title: title.trim(),
      writer: writer.split(',').map((item)=> item.trim())
     });
    });
    console.log(array);
  }
});
};
 
cs

8번째 줄에서 const $ = cheerio.load(body);  를 사용하여  request객체로 받은 코드의 내용중에 body 부분을 jquery 형태로 변환한다.

그리고 아래에는 그 body 안에 있는 sub_book_list 클래스의 제목명과 작가명을 추출하였고 , 배열에 push 하여 데이터를 얻었다.

이처럼 간단하게 jquery를 사용할수 있겠끔 해주는 것이 cheerio객체이다.

 

 

 

async 모듈- 여러개를 한번에 보내기 (1)

 

async 모듈은  코드의 흐름을 관리하거나 파일 처리를 할 때 사용하는 모듈이다.

1
2
3
4
5
6
7
8
const fs = require('fs');
const async = require('async');
 
var files = ['TextFile1.txt','TextFile2.txt','TextFile3.txt'];
 
async.map(files, fs.readFile, (error, results)=>{
    console.log(results);
});
cs

가상의 파일 TextFile1,TextFile2,TextFile3 가 있다고 가정을 한다면  async 모듈에서 map 함수를 포함해서  여러가지 함수가 있을 수도 있는데

보통 여러개의 파일을 한번에 보낼때는 map 함수가 사용된다. map에서 첫번째에는 한번에 보내려고 하는 파일의 배열이 들어가게 되고

2번째에는 fs의 메서드 그리고 마지막에는 데이터를 전달하는 리턴함수가 들어가게 된다. 

위와 같은 코드로 사용하면 여러개의 파일을 한번에 보낼수 있는 편리한 코드가 만들어 진다.

 

 

 

728x90
Comments