motor js
var page = require('webpage').create();
var system = require('system');
var url = system.args[1];
page.open(url, function(status) {
var elements = page.evaluate(function() {
var nodes = {};
[].forEach.call(document.querySelectorAll('*'), function(element) {
var computedStyle = getComputedStyle(element);
var nodeStyle = {};
for(var i = 0; i < computedStyle.length; i++){
var node = computedStyle[i];
nodeStyle[node] = computedStyle.getPropertyValue(node);
}
if (nodes[element.nodeName]) {
nodes[element.nodeName].push(nodeStyle);
} else {
nodes[element.nodeName] = [nodeStyle];
}
});
return nodes;
});
console.log(JSON.stringify(elements));
phantom.exit();
});
var express = require('express');
var router = express.Router();
router.get('/crawler', function(req, res, next) {
var elements,
data,
util = require('util'),
spawn = require('child_process').spawn,
ls = spawn('phantomjs', ['motor.js', 'http://www.medium.com']);
ls.stderr.on('data', function (data) {
console.log('stderr: ' + data);
});
ls.on('exit', function (code) {
console.log('child process exited with code ' + code);
});
var data = ls.stdout.pipe(res);
});
module.exports = router;