'크롤링'에 해당하는 글 1건

최근 SNS크롤러를 만들면서 크롤링에흥미가생겨 casperjs 함수에 대해 몇개 소개해볼려고한다



this.fill

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var links = [];
var casper = require('casper').create({
    pageSettings: {
        loadImages: true,//The script is much faster when this field is set to false
        loadPlugins: true,
        userAgent: 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36' 
 },
    
});
// 캐스퍼의 사이즈 옵션을 나타낸다 예제는 1024x768 해상도를 주었다
casper.options.viewportSize = {width: 1024, height: 768}
 
 
  //트위터 페이지에서 검색 텍스트 박스안에 #블랙베리 라는 예제를 입력해준다
casper.start('https://twitter.com/search?f=tweets&vertical=default&q=%23%EC%95%84%EC%9D%B4%ED%8F%B0&src=typd'function() {
    var fileLocate = 'screenShotTest/1.jpg';
// 캡쳐 부분이다
    this.captureSelector(fileLocate, "html");
    this.fill('form#global-nav-search', { 'q''#블랙베리' }, true);
 
});
 
 
cs



this.evaluate



대략적인 실행 매커니즘은 


 start -> then() -> evaluate() -> pass function - > Dom -> execute function -> return value


실제로 코드를 사용하게되면


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
 // 캐스퍼가 스타트후 그이후에 실행되는 구조
casper.then(function(){

  // latestID 라는 function 생성
    var latestId = function(){

//'#stream-items-id li' 값 반환
         return document.querySelector('#stream-items-id li').innerText

    };

   // this.evaluate 을 통해 함수실행시키고 return 값을 받는다
    console.log(this.evaluate(latestComment));
 
 
   
});
 
 
casper.run(function() {  
    var fileLocate = 'screenShotTest/2.jpg';
    this.captureSelector(fileLocate, "html");
    console.log('완료')
});
 

cs




scrolltoBottom


이 기능은 현재페이지의 스크롤을 최하단으로 이동한다 


1
2
3
4
5
6
7
8
9
10
11
12
13
                            // 페이지를 최하단으로 이동한다
this.scrollToBottom();
  
// 페이지를 최하단으로 이동후 현재페이지의 Top,scrollY값을 구한다
                            var scrollY = this.evaluate(function() {
                                    return window.scrollY;
                                });
                                
                             console.log(scrollY)
                            var scrollTop = this.evaluate(function() {
                                return window.document.body.scrollTop = document.body.scrollHeight;
                                });

                             console.log(scrollTop)
                  
 
cs




thenClick


1
2
3
4
5
6
7
8
 // 캐스퍼js 사이트접속후 첫번째 링크를 클릭하는 이벤트
casper.start('http://casperjs.org/').thenClick('a'function() {
    this.echo("I clicked on first link found, the page is now loaded.");
});
 
casper.run();
 
 
cs




thenEvaluate

1
2
3
4
5
6
7
// 구글에서 Chuck Norris 를 검색한다
casper.start('http://google.fr/').thenEvaluate(function(term) {
    document.querySelector('input[name="q"]').setAttribute('value', term);
    document.querySelector('form[name="f"]').submit();
}, 'Chuck Norris');
 
casper.run();
cs






WRITTEN BY
내가달이다

,