对于一些范围,我有一个在 cloudfoundry 上运行的抓取应用程序。由于这里讨论的 Contextify 问题,我无法使用 jsdom 来执行此操作。
为了解决这个问题,我开始用 Cheerio 替换 jsdom ,但是我现在意识到它并不完全支持我需要用来处理抓取的数据的 Sizzle 选择器。
经过一番研究,我开始认为我已经碰壁了——还有其他方法可以解决这个问题吗?
谢谢!
对此延迟表示抱歉。您现在可以在 Cloudfoundry 上成功安装 JSDOM,但是,似乎某些功能不可用。无法创建浏览器窗口,例如使用 jQuery。但是,您可以创建一个 jsdom 文档。
给定以下示例;
var http = require('http');
var util = require('util');
var jsdom = require("jsdom");
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.write("JSDom object;");
createDocAndQuery(res);
res.write("\nNumber of node.js releases = ");
getLinkCount(res);
}).listen(3000);
function createDocAndQuery(response) {
var doc = jsdom.jsdom("<html><body></body></html>", jsdom.level(1, "core"));
response.write(util.inspect(doc));
}
function getLinkCount(response) {
jsdom.env(
"http://nodejs.org/dist/",
["http://code.jquery.com/jquery.js"],
function (errors, window) {
response.end ("" + window.$("a").length)
}
);
}
第一部分在 CloudFoundry.com 上工作,但是第二部分在创建窗口对象时失败。