Web Scrape Meteor Pages

时间:2014-07-25 03:31:01

标签: node.js meteor web-scraping

我正在尝试编写一个擦除流星网页的应用程序。这是相当困难的,因为流星网页最初完全呈现为Javascript。有没有办法用某种刮刀渲染页面?

如果有帮助的话,可能会用节点来做。

由于

2 个答案:

答案 0 :(得分:5)

您可以使用phantomjs来呈现网页。这是一个专门为流星网页设计的示例(来自spiderable),用于捕获HTML:

var fs = require('fs');
var child_process = require('child_process');

console.log('Loading a web page');

var page = require('webpage').create();

page.open("http://localhost:3000", function(status) {

});

var i = 0;

setInterval(function() {
     var ready = page.evaluate(function () {
          if (typeof Meteor !== 'undefined' 
               && typeof(Meteor.status) !== 'undefined' 
               && Meteor.status().connected) {
               Deps.flush();
               return DDP._allSubscriptionsReady();
          }
          return false;
     });

     console.log("Ready", ready);

     if (ready) {
          var out = page.content;
          console.log(out);
          phantom.exit();
     }
}, 100);

就是这样,你可以用require('child_process').execstdin包装输出并捕获它。

您可以使用phantomjs script.js运行代码,它会返回流星页面的HTML。

答案 1 :(得分:1)

如果他们启用了spiderable包,那么您可以伪装成网络爬虫来让服务器呈现页面。

如果你没有控制服务器或者它没有启用,你可能不得不使用Selenium - 但爬行将是CPU密集型且速度慢。

相关问题