我正试图通过nodejs获取亚马逊定价信息。
这是目标网址: http://aws.amazon.com/ec2/pricing/
但是我在nodejs中读取的定价表的内容没有完全呈现,只有javascripts。
到目前为止,我使用了jsdom
,jquerygo
和phantom
,但我没有成功。即使设置超时也无济于事。任何人都可以为这个具体案例提供工作解决方案吗?
谢谢和最诚挚的问候。
答案 0 :(得分:0)
使用node.js
抓取网页的方法有很多种我受spookjs
的启发 var Spooky = require('spooky');
var spooky = new Spooky({
child: {
transport: 'http'
},
casper: {
logLevel: 'debug',
verbose: true
}
}, function (err) {
if (err) {
e = new Error('Failed to initialize SpookyJS');
e.details = err;
throw e;
}
spooky.start(
'http://en.wikipedia.org/wiki/Spooky_the_Tuff_Little_Ghost');
spooky.then(function () {
this.emit('hello', 'Hello, from ' + this.evaluate(function () {
return document.title;
}));
});
spooky.run();
});
spooky.on('error', function (e, stack) {
console.error(e);
if (stack) {
console.log(stack);
}
});
spooky.on('console', function (line) {
console.log(line);
});
spooky.on('hello', function (greeting) {
console.log(greeting);
});
spooky.on('log', function (log) {
if (log.space === 'remote') {
console.log(log.message.replace(/ \- .*/, ''));
}
});
答案 1 :(得分:0)
这解决了我的问题:
我注意到在节点中安装幻像模块时,它抱怨了phantomjs版本(版本2)并且正在某个临时位置下载版本(1.9.8)。
因此我安装了1.9.8版,并将PATH变量设置为。它奏效了! 还必须注意,在page.open(...)函数内部,你必须设置很长时间(在我的情况下大约35秒),以便整个页面完全加载和渲染。