phantomjs는 js를 실행할 수 있는 헤드리스 브라우저이기 때문에 웹 크롤링에 적합한 dom 노드도 실행할 수 있습니다.
예를 들어 웹페이지의 '오늘의 역사' 콘텐츠를 일괄 크롤링하려고 합니다. 홈페이지
dom 구조를 관찰하면 .list li a의 제목 값만 얻으면 됩니다. 그래서 우리는 고급 선택기를 사용하여 DOM 조각을 만듭니다
var d= '' var c = document.querySelectorAll('.list li a') var l = c.length; for(var i =0;i<l;i++){ d=d+c[i].title+'\n' }
이후에는 phantomjs에서 js 코드를 실행시키기만 하면 됩니다~
var page = require('webpage').create(); page.open('http://www.todayonhistory.com/', function (status) { //打开页面 if (status !== 'success') { console.log('FAIL to load the address'); } else { console.log(page.evaluate(function () { var d= '' var c = document.querySelectorAll('.list li a') var l = c.length; for(var i =0;i<l;i++){ d=d+c[i].title+'\n' } return d })) } phantom.exit(); });
마지막으로 catch.js로 저장하고 dos에서 실행한 후 내용을 txt 파일로 출력합니다. (phantomjs의 파일 api를 사용해 작성할 수도 있습니다)