Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save harryhan24/9557c8be5ada185b1c3315351a85aced to your computer and use it in GitHub Desktop.
Save harryhan24/9557c8be5ada185b1c3315351a85aced to your computer and use it in GitHub Desktop.

예제1

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 처리를 해주어야 한다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment