노드 cheerio-httpcli를 사용한 기사제목 크롤링 해보기
2019. 6. 27. 12:04ㆍ크롤링
크롤링해보기 전에 먼저 robots.txt를 확인해 보았는데 모든 경로가 다 허용이 되어있어서 크롤링하고 올려봅니다. 문제가 생길 시에 삭제하겠습니다.
평소 자주 보는 힙합엘이의 국외 뉴스를 크롤링해보았습니다.
노드 js에 cheerio-httpcli모듈과 오라클 db에 저장해 보기 위해서 oracledb모듈을 사용했습니다.
결과물 사진
크롤링 소스코드
var client = require('cheerio-httpcli');
var oracledb = require('oracledb');
oracledb.autoCommit= true;
for(var j = 1; j<10;j++){
let url = 'http://hiphople.com/index.php?mid=news_world&page='+j;
client.fetch(url, null, function (err, $, res, body) {
for(var i = 0; i<10;i++){
(function() {
var newsbody = $('.wz-item-content');
var newsSpan = $(newsbody[i]).find('span');
var newsTitle = $(newsSpan[0]).html(); // 타이틀
var imageBody = $('.thumbwrap');
var imageDiv = $(imageBody[i]).find('div');
var imageLink = $(imageDiv).attr('style').split('\'')[1];
var urlCr = $('.wz-item');
var href = $(urlCr[i]).find('a').attr('href');
var newshref = 'http://hiphople.com'+href;
oracledb.getConnection({
user : "increpas",
password : "increpas",
connectString : "localhost/xe"
},
function (err, connection) {
if (err) {
console.error(err.message);
return;
}
connection.execute("insert into newstable VALUES( ( select nvl( max(newsNo)+1,1 ) from newstable),:newsImageLink,:newsTitle,0,sysdate,:newshref )"
, [imageLink,newsTitle,newshref],
function (err) {
if (err) {
console.log(err.message);
return;
}
connection.commit(function (err) {
if (err) {
console.log(err.message);
return;
}
})
});
});
}(i));
}
});
}
'크롤링' 카테고리의 다른 글
깃허브 오픈소스를 활용하여 네이버 뉴스기사 크롤링하기 (0) | 2019.09.06 |
---|---|
파이썬 Beautifulsoup을 활용한 크롤링 공부 (0) | 2019.08.04 |