var request = require("request");
var cheerio = require("cheerio");
var fs = require('fs');
var async = require('async');
var url = "가져올 url 주소";
request(url, function(error, response, body) {
var $ = cheerio.load(body);
var boardList = $(".bd_lst_wrp li");
boardList.each(function(){
//var postTitle = $(this).find("h1").text();
//var postUrl = $(this).find("h1 a").attr("href");
//console.log($(this));
//날짜
console.log($(this).find(".mmyy").text());
//제목글
console.log($(this).find(".ngeb").text());
//작성자
console.log($(this).find(".member_0").text());
})
});
request의 경우 페이지 정보를 가져오는 모듈이며 cheerio는 가져온 모듈을 jquery selector처럼 가져올 수 있게 해준다.
fs.appendFile('list.csv', data + "," + subject + "," + writter + "\r\n", encoding='utf8', function (err) {
if (err) throw err;
});
가져온 정보를 파일시스템 모듈을 통해서 csv 포맷으로 저장할 수 있다.
for (var i = 1; i < 268; i++) {
var options = {
url: url + i
};
request(options, callback);
}
function callback(error, response, body) {
if(body){
var $ = cheerio.load(body);
var boardList = $("li.clear");
boardList.each(function(){
//날짜
var data;
$(this).find(".mmyy").text() ? data = $(this).find(".mmyy").text().trim() : data = "";
//console.log(data);
var data = new Date(data);
//제목글
var subject;
$(this).find(".ngeb").text() ? subject = $(this).find(".ngeb").text().trim() : subject = "";
subject = _.replace(subject, ",", "");
//console.log(subject);
//작성자
var writter;
$(this).find(".member_0").text() ? writter = $(this).find(".member_0").text().trim() : writter = "";
//lodash
writter = _.replace(writter, ",", "");
fs.appendFile('list111.txt', data + "," + subject + "," + writter + "\r\n", 'utf8', function (err) {
if (err) throw err;
});
})
}
}
여러 페이지를 가져오는 경우 callback 처리를 해주어야 한다.