【问题标题】:How can one parse HTML server-side with Meteor?如何使用 Meteor 解析 HTML 服务器端?
【发布时间】:2014-04-22 20:27:12
【问题描述】:

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

【问题讨论】:

标签: meteor


【解决方案1】:

考虑使用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,它非常有趣。感谢您的出色回答。
  • 使用 Meteor 1.2.1、__meteor_bootstrap__.require('cheerio');Meteor.require('cheerio'); 不起作用。甚至其他一些帖子也建议Meteor.npmRequire('cheerio') 不起作用。对我有用的是Npm.required('cheerio'),但@Akshat 的回答仍然帮助我废弃了http 包的html 响应。
【解决方案2】:

按照 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。

【讨论】:

  • 谢谢,这是最终奏效的方法!
猜你喜欢
  • 2015-10-21
  • 1970-01-01
  • 1970-01-01
  • 2013-05-13
  • 2015-01-06
  • 2015-08-05
  • 1970-01-01
  • 2014-03-26
  • 1970-01-01
相关资源
最近更新 更多