Node.js에서 크롤링 중에 숨겨진 엘리먼트를 가져오고 싶습니다.

조회수 3928회
var http = require('http');
var fs = require('fs');
var request = require('request');
var cheerio = require('cheerio');
var iconv = require('iconv-lite');
iconv.skipDecodeWarning = true;  //Warning 출력 생략

var options = {
    uri: 'http://cy.cyworld.com/home/ALG5LB24',
    headers: {
        'User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; IPMS/A640400A-14D460801A1-000000426571; TCO_20110131100426; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; Tablet PC 2.0)'   
    },
    encoding: 'binary' 있어서
};

request(options, function (err, response, body) {
        var decode_url = iconv.decode(body, 'utf-8');
        var $ = cheerio.load(decode_url);

  console.log(decode_url);  
});

위에 있는 소스는 cheerio 모듈을 이용해서 URL을 긁어와서 콘솔창에 띄우는 소스입니다. 그런데 다른 사이트들은 모든 성분들이 다 긁어와져서 내부 엘리먼트에 접근이 가능한데, 이상하게 싸이월드만 몇가지 div 클래스들이 안긁혀지네요.. (정확히는 div가 긁어지긴하는데 그 안에 내부 성분이 안긁어집니다 ex) 긁어온 url에서 postArea라는 div 클래스에 접근해서 접근한 div 클래스만 출력해보면 안에 성분은 많은데 이렇게만 뜹니다.. )

아마 제 생각으로는 싸이월드 쪽에서 막아놓은 것 같은데 다른 라이브러리를 사용해서 해결을 해야 할까요?

  • (•́ ✖ •̀)
    알 수 없는 사용자

2 답변

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)