Подтвердить что ты не робот

Скребок с Meteor.js

Можно ли царапать с помощью meteor.js? Просто обнаружил cheerio, который отлично работает в сочетании с request. Могу ли я использовать их с метеоритом или что-то подобное?

У вас есть рабочий пример?

4b9b3361

Ответ 1

Конечно! Трудно представить, что метеор не может сделать! Сначала вам нужно что-то для обработки удаленных HTTP-запросов. В вашем каталоге meteor в терминале выполните meteor add http, чтобы добавить пакет Meteor.http, а также npm install cheerio (посмотрите еще один вопрос о том, как установить модули npm чтобы узнать, где именно установить внешние модули 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;
    }
});

Клиентская сторона script:

Meteor.call("getTime", function(error, result) {
    alert("The current time is " + result); 
});

Надеюсь, это полезно. среди Cheerio есть и другие фреймворки node, такие как node.io

Ответ 2

Следующий код используется в этом проекте, чтобы очистить твит-шторм:

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

    })

  });
}

Ответ 3

Вы можете взглянуть на http://casperjs.org/, что очень полезно. Вы также можете делать скриншоты, автоматическое тестирование и т.д.

Ответ 4

теперь вы должны использовать meteorhacks npm package https://github.com/meteorhacks/npm и требуйте этого с помощью:

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

работал у меня:)