使用nodejs

时间:2015-06-23 13:38:56

标签: javascript node.js web-scraping

我正试图通过nodejs获取亚马逊定价信息。

这是目标网址: http://aws.amazon.com/ec2/pricing/

但是我在nodejs中读取的定价表的内容没有完全呈现,只有javascripts。

到目前为止,我使用了jsdomjquerygophantom,但我没有成功。即使设置超时也无济于事。任何人都可以为这个具体案例提供工作解决方案吗?

谢谢和最诚挚的问候。

2 个答案:

答案 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(/ \- .*/, ''));
   }
});

注意:使用node.js

可以灵活地运行casperjs和phantom js

答案 1 :(得分:0)

这解决了我的问题:

我注意到在节点中安装幻像模块时,它抱怨了phantomjs版本(版本2)并且正在某个临时位置下载版本(1.9.8)。

因此我安装了1.9.8版,并将PATH变量设置为。它奏效了! 还必须注意,在page.open(...)函数内部,你必须设置很长时间(在我的情况下大约35秒),以便整个页面完全加载和渲染。