2013-02-22 25 views
15

我希望能夠從我用Meteor.http方法獲取的HTML頁面中獲取鏈接。在服務器端使用jQuery是理想的選擇,但我認爲這不起作用。如何用Meteor解析HTML服務器端?

+0

我使用npm和jQuery,爲流星1.0,請參閱http://stackoverflow.com/a/26721055/1197775 – juanpastas 2014-11-03 18:57:42

回答

13

考慮使用cheerio它就像jquery,但更多的是刮。我曾試圖回答這個問題,所以我希望這次能做得更好。

它的新公共管理模塊,使第一步與終端安裝它(你的項目目錄內):

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

我這今天/ 2月23日

enter image description here

這一樣的github.com/meteor/meteor

enter image description here

+0

我真的很喜歡流星,它只是非常有趣。謝謝你的出色答案。 – Simon 2013-02-23 00:24:32

+1

這是如此過時 – 2014-09-03 22:21:31

+0

隨着流星1.2.1,'__meteor_bootstrap __。require('cheerio');''或'流星需求('cheerio');'不起作用。甚至還有一些帖子提示'Meteor.npmRequire('cheerio')'不起作用。對我來說,'Npm.required'('cheerio')'對我來說很有效,但@Akshat仍然回答我'http'包中的html響應。 – Jay 2015-12-04 15:13:24

10

使用cheerio,作爲Akshat暗示的,但我會推薦一種不同的方式來使用它,到目前爲止,Meteor 0.8.0。

首先,安裝npm for Meteor

$ mrt add npm 

然後修改packages.json來(當然你也可以有不同的版本cheerio的,或其他節點封裝以及):

{ 
    "cheerio": "0.15.0" 
} 

server.js(或任何其他文件,在服務器端代碼)開始:

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

以您喜歡的方式使用cheerio。

運行時$ meteor它會自動安裝cheerio。

+0

謝謝,這是最終奏效的方法! – 2014-09-03 22:21:07

相關問題