我可以使用meteor.js吗?刚刚发现的cheerio
与request
结合得非常好。我可以将这些用于流星,还是有类似的东西?
你有一个有效的例子吗?
答案 0 :(得分:21)
当然!很难想象流星不能做什么!首先,您需要一些东西来处理远程http请求。在终端中的meteor目录中运行meteor add http
以添加Meteor.http
包,同时添加npm install cheerio
(查看another SO question on how to install npm modules以查看外部npm模块的确切安装位置。< / p>
这是一个可能会帮助你的例子,它会抓取current time。
服务器js
require = __meteor_bootstrap__.require; //to use npm require must be exposed.
var cheerio = require('cheerio');
Meteor.methods({
getTime: function () {
result = Meteor.http.get("http://www.timeanddate.com/worldclock/city.html?n=136");
$ = cheerio.load(result.content);
CurrentTime = $('#ct').html();
return CurrentTime;
}
});
客户端脚本:
Meteor.call("getTime", function(error, result) {
alert("The current time is " + result);
});
我希望这会有所帮助。在Cheerio中还有其他节点框架,例如node.io
答案 1 :(得分:1)
this project中使用以下代码来抓取推文:
if (Meteor.isClient) {
Meteor.call('getTweets', function (error, result) {
if (error) {
console.log("error", error);
};
Session.set("tweets", result);
});
Template.tweets.helpers({
rant: function () {
return Session.get("tweets");
}
});
}
服务器端
if (Meteor.isServer) {
Meteor.startup(function () {
var cheerio = Meteor.npmRequire('cheerio');
Meteor.methods({
getTweets: function () {
result = Meteor.http.get("https://twitter.com/Royal_Arse/status/538330380273979393");
$ = cheerio.load(result.content);
var body = $('#stream-items-id > li:nth-child(n) > div > div > p').text();
return body;
},
})
});
}
答案 2 :(得分:0)
您可以查看http://casperjs.org/这非常有用。你也可以做截图,自动测试等......
答案 3 :(得分:0)
现在你应该使用meteorhacks npm package https://github.com/meteorhacks/npm 并要求:
var cheerio = Meteor.npmRequire('cherio');
为我工作:)