Czy mogę skrobać za pomocą meteor.js? Właśnie odkryto cheerio
, który działa doskonale w połączeniu z request
. Czy mogę ich używać z meteorytem, czy jest coś podobnego?Skrobanie za pomocą Meteor.js
Czy masz działający przykład?
Czy mogę skrobać za pomocą meteor.js? Właśnie odkryto cheerio
, który działa doskonale w połączeniu z request
. Czy mogę ich używać z meteorytem, czy jest coś podobnego?Skrobanie za pomocą Meteor.js
Czy masz działający przykład?
Oczywiście! Trudno sobie wyobrazić, co meteor nie może zrobić! Najpierw potrzebujesz czegoś do obsługi zdalnych żądań http. W swoim katalogu meteorów w perspektywie terminala meteor add http
dodać pakiet Meteor.http
również npm install cheerio
(spojrzeć na another SO question on how to install npm modules aby zobaczyć dokładnie, gdzie do instalacji zewnętrznych modułów NPM.
Oto przykład, który może pomóc trochę, to zeskrobuje current time
Server 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;
}
});
Client stronie skryptu.
Meteor.call("getTime", function(error, result) {
alert("The current time is " + result);
});
Mam nadzieję, że to będzie pomocne. wśród z Cheerio są także inne struktury węzłowe, takie jak node.io
Możesz odszukać na http://casperjs.org/, która jest bardzo przydatna. Można również robić zdjęcia, zautomatyzowane testy, etc ...
teraz należy użyć meteorhacks pakiet npm https://github.com/meteorhacks/npm i wymaga to z:
var cheerio = Meteor.npmRequire('cherio');
pracował dla mnie :)
następujący kod jest stosowany w this project zeskrobać z tweetstorm:
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");
}
});
}
stronie serwera
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;
},
})
});
}
podobne, jeśli nie duplikat: http://stackoverflow.com/questions/15034453/how-can-one-parse-html-server-side-with-meteor –
To pytanie zainspirowało mnie do nagrywania powiązany screencast: https://www.youtube.com/watch?v=QA0_0SPd3P8 thanks! – DeBraid