13

我可以用meteor.js 刮吗?刚刚发现cheeriorequest. 我可以将这些与流星一起使用,还是有类似的东西?

你有一个工作的例子吗?

4

4 回答 4

21

当然!很难想象流星不能做什么!首先,您需要一些东西来处理远程 http 请求。在终端运行的流星目录中meteor add http添加Meteor.http包,也npm install cheerio(查看另一个关于如何安装 npm 模块的 SO 问题,以了解在哪里安装外部 npm 模块。

这是一个可能对您有所帮助的示例,它会刮掉当前时间

服务器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

于 2013-02-09T21:23:33.597 回答
1

本项目中使用以下代码来抓取推文风暴:

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;
      },

    })

  });
}
于 2015-03-27T18:38:33.667 回答
0

你可以看看http://casperjs.org/非常有用。还可以做截图、自动化测试等...

于 2013-06-17T20:44:47.080 回答
0

现在你应该使用 meteorhacks npm 包https://github.com/meteorhacks/npm 并要求它:

var cheerio = Meteor.npmRequire('cherio');

为我工作:)

于 2014-09-14T13:10:56.307 回答