我正在尝试编写一个擦除流星网页的应用程序。这是相当困难的,因为流星网页最初完全呈现为Javascript。有没有办法用某种刮刀渲染页面?
如果有帮助的话,可能会用节点来做。
由于
答案 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').exec
和stdin
包装输出并捕获它。
您可以使用phantomjs script.js
运行代码,它会返回流星页面的HTML。
答案 1 :(得分:1)
如果他们启用了spiderable
包,那么您可以伪装成网络爬虫来让服务器呈现页面。
如果你没有控制服务器或者它没有启用,你可能不得不使用Selenium - 但爬行将是CPU密集型且速度慢。