15

我希望能够从我使用 Meteor.http 方法获取的 HTML 页面中抓取链接。在服务器端使用 jQuery 是理想的,但我认为这行不通。

4

2 回答 2

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

我从今天/2 月 23 日收到了这个

在此处输入图像描述

与 github.com/meteor/meteor 上的相同

在此处输入图像描述

于 2013-02-22T23:12:52.407 回答
10

正如 Akshat 所建议的那样使用cheerio,但到目前为止,我会推荐一种不同的使用方式,用于 Meteor 0.8.0。

首先,为 Meteor 安装 npm

$ mrt add npm

然后修改packages.json为(当然你可以有不同版本的cheerio,或者其他节点包):

{
  "cheerio": "0.15.0"
}

server.js(或任何其他文件,在服务器端代码中)开始:

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

以你喜欢的方式使用cheerio。

运行后$ meteor它会自动安装cheerio。

于 2014-04-22T12:27:12.583 回答