최근 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('완료') }); |
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 |
'MEAN stack > SNS Crawler App' 카테고리의 다른 글
spookyJS :: 오류(1) tiny-jsonrpc (0) | 2017.01.27 |
---|---|
유튜브,트위터 크롤러 :: 배열 데이터 순서 랜덤 (9) | 2017.01.08 |
인스타그램,트위터 크롤러 :: 4 Nschedule (8) | 2016.12.01 |
인스타그램,트위터 크롤러 :: 3 Nodejs (0) | 2016.12.01 |
인스타그램,트위터 크롤러 :: 2 UI (4) | 2016.11.29 |
WRITTEN BY
,