【发布时间】:2014-04-22 20:27:12
【问题描述】:
我希望能够从我使用 Meteor.http 方法获取的 HTML 页面中抓取链接。在服务器端使用 jQuery 是理想的,但我认为这行不通。
【问题讨论】:
-
我使用 npm 和 jQuery,对于 Meteor 1.0,请参阅 stackoverflow.com/a/26721055/1197775
标签: meteor
我希望能够从我使用 Meteor.http 方法获取的 HTML 页面中抓取链接。在服务器端使用 jQuery 是理想的,但我认为这行不通。
【问题讨论】:
标签: meteor
考虑使用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 上的相同
【讨论】:
__meteor_bootstrap__.require('cheerio'); 或 Meteor.require('cheerio'); 不起作用。甚至其他一些帖子也建议Meteor.npmRequire('cheerio') 不起作用。对我有用的是Npm.required('cheerio'),但@Akshat 的回答仍然帮助我废弃了http 包的html 响应。
按照 Akshat 的建议,使用 cheerio,但我建议使用不同的方式使用它,截至目前,Meteor 0.8.0。
首先,安装npm for Meteor:
$ mrt add npm
然后将packages.json修改为(当然你可以有不同版本的cheerio,或者其他node包也可以):
{
"cheerio": "0.15.0"
}
在server.js(或任何其他文件,在服务器端代码中)开始:
var cheerio = Meteor.require('cheerio');
以你喜欢的方式使用cheerio。
在运行$ meteor 时,它会自动安装cheerio。
【讨论】: