【问题标题】:JSDom Alternative with full Sizzle support?具有完整 Sizzle 支持的 JSDom 替代方案?
【发布时间】:2012-09-27 12:12:10
【问题描述】:

对于一些范围,我有一个在 cloudfoundry 上运行的抓取应用程序。由于 here 讨论的 Contextify 问题,我无法使用 jsdom 来执行此操作。

为了解决这个问题,我开始将 jsdom 替换为 Cheerio,但是我现在意识到它并不完全支持我需要用来处理抓取的数据的 Sizzle 选择器。

经过一些研究,我开始认为我遇到了难题 - 是否有其他方法可以解决这个问题?

谢谢!

【问题讨论】:

    标签: node.js cloud-foundry sizzle jsdom appfog


    【解决方案1】:

    对此延迟表示抱歉。您现在可以在 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 上有效,但第二部分在创建窗口对象时失败。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-23
      • 2014-11-27
      • 2019-09-18
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      相关资源
      最近更新 更多