2013-02-22 14 views
15

私はMeteor.httpメソッドを使ってフェッチしているHTMLページからリンクを削り取ることができます。サーバー側でjQueryを使用するのが理想的だろうが、これはうまくいくとは思わない。MeteorでHTMLサーバー側をどのように解析できますか?

+0

Meteor 1.0のためにnpmとjQueryを使用しました。http://stackoverflow.com/a/26721055/1197775 – juanpastas

答えて

13

cheerioをjqueryのように使用することを検討してください。私はこれに前もって答えようとしたので、今度はもっと良い仕事をすることを願っています。

その

ので、最初のステップは、端末と(プロジェクトのディレクトリ内で)それをインストールNPMモジュール:

meteor add http 
cd .meteor 
npm install cheerio 

だから今コード:あなたのサーバーのJS /または同等でこれを使用する必要が

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()  
    } 
}) 

あなたは、クライアント側のJSからこれを実行する場合、あなたは流星のgithubのブランチ上の最後のアクションが表示されます:

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

Akshatが示唆するように、私は、

enter image description here

今日/ 2月23日のとして利用cheerio github.com/meteor/meteor

enter image description here

+0

私はMeteorを本当に愛しています。優れた答えをありがとう。 – Simon

+1

これは古くなっています –

+0

Meteor 1.2.1、 '__meteor_bootstrap __。require( 'cheerio');'または 'Meteor.require( 'cheerio');' doesnt work。他の投稿でさえ、 'Meteor.npmRequire( 'cheerio')'はうまくいきません。私のために働いたのは 'Npm.required( 'cheerio')'ですが、@Akshatの答えは 'http'パッケージからのhtml応答を取り除くのに役立ちました。 – Jay

10

上と同じようにこれを得ました私はMeteor 0.8.0のために、これを使用する別の方法をお勧めします。

まず、npm for Meteorをインストールします。

$ mrt add npm 

その後packages.json(もちろん、あなたにもチェリオの異なるバージョン、または他のノードパッケージを持つことができます)に変更します。server.js

{ 
    "cheerio": "0.15.0" 
} 

を(またはその他のファイル、サーバー側コード)start:

あなたが好きな方法でcheerioを使用してください。

$ meteorを実行すると自動的にcheerioがインストールされます。

+0

ありがとう、これは最終的に働いたアプローチです! –

関連する問題