ヘッドレスブラウザとは「画面がないWEBブラウザ」の事です。
最近では Headless Chrome が人気です。 参考 : https://goo.gl/NQsFS2
が、npm だけでインストールできる phantomJS を紹介します。
WebKit(Safari) ベースのヘッドレス(画面なし)ブラウザ
npm install phantomjs
以下のパスを手動で追加します
./node_modules/phantomjs/bin/phantomjs
brew install phantomjs
yum -y install freetype
yum -y install fontconfig
npm install -g phantomjs
Gecko(firefox) ベースのヘッドレス(画面なし)ブラウザ
brew install slimerjs
npm install -g slimerjs
ヘッドレスブラウザを簡単に扱うライブラリ(JavaScript)です。 このcasperJSから「phantomJS」または「slimerJS」を操作します。
brew install casperjs
yum -y install freetype
yum -y install fontconfig
npm install -g casperjs
test.js で下記コードを保存
var AnchorArrays = [];
var casper = require('casper').create();
casper.start('http://flatsystems.net/kakunin.php', function() {
});
casper.then(function() {
casper.wait(3000, function() {
// xpath要素の取得
var xpath = "//*[@id='my_id']";
var element = this.evaluate(function(path){
return __utils__.getElementByXPath(path).innerHTML;
},xpath);
console.log( element );
//png
this.capture('kakunin.png');
console.log( 'キャプチャを作成しました。' );
});
});
casper.run();
casperjs test.js
casperjs --engine=slimerjs test.js
slimerJSで起動するときは --engine=slimerjs を追加します。
https://chrome.google.com/webstore/detail/resurrectio/kicncbplfjgjlliddogifpohdhkbjogm
>Node.jsでWEBページのスクレイピングを行う際に必要となる文字コードの変換と、cheerioによってパースしたHTMLをjQueryのように操作できるHTTPクライアントモジュールです。
特徴 : 文字コード自動変換 , jqueryライクなセレクタ , フォーム簡易送信機能
https://www.npmjs.com/package/cheerio-httpcli
npm install cheerio-httpcli
>HTML/XML parser and web scraper for NodeJS.
特徴 : xpathで要素の取得が可能 , Aタグのリンクを自動的に辿れる
https://www.npmjs.com/package/osmosis
マニュアル : https://github.com/rchipka/node-osmosis/wiki
npm install osmosis
【osmosis node.js】で検索した結果のリンクURLをスクレイピングします。
var osmosis = require('osmosis');
var url = 'https://www.google.co.jp/search?client=safari&rls=en&q=osmosis&ie=UTF-8&oe=UTF-8&gfe_rd=cr&ei=JXMyWLv2NOjC8AernaPYAg#q=osmosis+node.js';
osmosis
.get(url)
.paginate("//*[@id='pnnext']",3) // 最大 3ページ目まで
.set({
'link_url' : ["//*[@id='rso']//h3/a/@href"] ,
'link_title': ["//*[@id='rso']//h3/a"] ,
})
.then(function( context, data){
// console.log(context.request);
console.log(data);
})
.done(function(){
console.log("=================================\nscrape done.\n");
});
その他のスクレイピングモジュール : http://blog.webkid.io/nodejs-scraping-libraries/