Simon
Simon

Reputation: 1869

How can one parse HTML server-side with Meteor?

I want to be able to scrape links out of an HTML page that I am fetching with the Meteor.http method. Would be ideal to use jQuery on the server-side but I don't think this works.

Upvotes: 15

Views: 4913

Answers (2)

Piotr Migdal
Piotr Migdal

Reputation: 12792

Use cheerio, as Akshat suggests, but I would recommend a different way of using it, as of now, for Meteor 0.8.0.

First, install npm for Meteor:

$ mrt add npm

Then modify packages.json to (of course you can have different version of cheerio, or other node packages as well):

{
  "cheerio": "0.15.0"
}

In server.js (or any other file, in server-side code) start:

var cheerio =  Meteor.require('cheerio');

The use cheerio in a way you like.

Upon running $ meteor it will automatically install cheerio.

Upvotes: 10

Tarang
Tarang

Reputation: 75945

Consider using cheerio its just like jquery but more for scraping. I have tried to answer this before so I hope I do a better job this time.

its an npm module so first step install it (inside your project dir) with terminal:

meteor add http
cd .meteor
npm install cheerio

So now the code:

You need to use this in your server js/or equivalent

var cheerio = __meteor_bootstrap__.require('cheerio');
Meteor.methods({
last_action: function() {
       $ = cheerio.load(Meteor.http.get("https://github.com/meteor/meteor").content);
       return $('.commit-title').text().trim()      
    }
})

If you run this from your client side js, you will see the last action on meteors github branch:

Meteor.call("last_action",function(err,result){ console.log(result) } );

I got this as of today/feb 23rd

enter image description here

which the same as on github.com/meteor/meteor

enter image description here

Upvotes: 13

Related Questions