Можно ли царапать с помощью meteor.js? Просто обнаружил cheerio
, который отлично работает в сочетании с request
. Могу ли я использовать их с метеоритом или что-то подобное?
У вас есть рабочий пример?
Можно ли царапать с помощью meteor.js? Просто обнаружил cheerio
, который отлично работает в сочетании с request
. Могу ли я использовать их с метеоритом или что-то подобное?
У вас есть рабочий пример?
Конечно! Трудно представить, что метеор не может сделать! Сначала вам нужно что-то для обработки удаленных 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
Следующий код используется в этом проекте, чтобы очистить твит-шторм:
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;
},
})
});
}
Вы можете взглянуть на http://casperjs.org/, что очень полезно. Вы также можете делать скриншоты, автоматическое тестирование и т.д.
теперь вы должны использовать meteorhacks npm package https://github.com/meteorhacks/npm и требуйте этого с помощью:
var cheerio = Meteor.npmRequire('cherio');
работал у меня:)